Python Django2.0集成Celery4.1教程


Posted in Python onNovember 19, 2019

环境准备

Python3.6

pip install Django==2.0.1

pip install celery==4.1.0

pip install eventlet (加入协程支持)

安装erlang和rabbitMQ-server

配置settings.py文件

在settings.py文件中添加如下内容

...
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False

CELERY_BROKER_URL = 'amqp://guest:guest@localhost:5672'

在settings.py同级目录创建celery.py

celery.py

注意替换: project_name

# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

# 设置环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings')

# 注册Celery的APP
app = Celery('project_name')
# 绑定配置文件
app.config_from_object('django.conf:settings', namespace='CELERY')

# 自动发现各个app下的tasks.py文件
app.autodiscover_tasks()

修改settings.py同级目录的init.py文件

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

__all__ = ['celery_app']

在某个APP中创建tasks.py文件

tasks.py

# -*- coding: utf-8 -*-

from celery.task import task

# 自定义要执行的task任务
@task
def print_hello():
  return 'hello celery and django...'

配置周期性任务或定时任务

再次编辑settings.py文件,添加如下内容

定时任务的配置格式参考:http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html

from celery.schedules import crontab
CELERY_BEAT_SCHEDULE = {
  # 周期性任务
  'task-one': {
    'task': 'app.tasks.print_hello',
    'schedule': 5.0, # 每5秒执行一次
    # 'args': ()
  },
  # 定时任务
  'task-two': {
    'task': 'app.tasks.print_hello',
    'schedule': crontab(minute=0, hour='*/3,10-19'),
    # 'args': ()
  }
}

启动worker和定时任务

启动worker (切换到manage.py同级目录下执行)

celery -A project_name worker -l info -P eventlet

启动定时任务或周期性任务

celery -A project_name beat -l info

这里备注一下:最好使用supervisord来管理上面这2条命令

存放任务结果的扩展

pip install django-celery-results
Install APP
INSTALLED_APPS = (
  ...,
  'django_celery_results',
)

生成数据库表:python manage.py migrate django_celery_results

配置settings:CELERY_RESULT_BACKEND = 'django-db' (用数据库存放任务执行结果信息)

以上这篇Python Django2.0集成Celery4.1教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现通过pil模块对图片格式进行转换的方法
Mar 24 Python
Python函数中*args和**kwargs来传递变长参数的用法
Jan 26 Python
如何在Python函数执行前后增加额外的行为
Oct 20 Python
python利用dir函数查看类中所有成员函数示例代码
Sep 08 Python
Python机器学习logistic回归代码解析
Jan 17 Python
Python unittest单元测试框架总结
Sep 08 Python
python 计算一个字符串中所有数字的和实例
Jun 11 Python
python操作文件的参数整理
Jun 11 Python
关于Python 的简单栅格图像边界提取方法
Jul 05 Python
pow在python中的含义及用法
Jul 11 Python
Python tkinter布局与按钮间距设置方式
Mar 04 Python
python如何求圆的面积
Jul 01 Python
通过celery异步处理一个查询任务的完整代码
Nov 19 #Python
Django 自动生成api接口文档教程
Nov 19 #Python
wxpython实现按钮切换界面的方法
Nov 19 #Python
Python性能分析工具Profile使用实例
Nov 19 #Python
使用apiDoc实现python接口文档编写
Nov 19 #Python
wxPython绘图模块wxPyPlot实现数据可视化
Nov 19 #Python
Python浮点数四舍五入问题的分析与解决方法
Nov 19 #Python
You might like
PHP实现图片裁剪、添加水印效果代码
2014/10/01 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
php之可变变量的实例详解
2017/09/12 PHP
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
基于jQuery实现多层次的手风琴效果附源码
2015/09/21 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
分分钟玩转Vue.js组件
2016/10/25 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
vue实现登录功能
2020/12/31 Vue.js
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
详解python实现交叉验证法与留出法
2019/07/11 Python
keras中的backend.clip用法
2020/05/22 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
应届生服装设计自我评价
2013/09/20 职场文书
打架检讨书300字
2014/02/02 职场文书
《雨霖铃》听课反思
2014/02/13 职场文书
党员公开承诺书内容
2014/05/20 职场文书
大四毕业生自荐书
2014/07/05 职场文书
财务个人年度总结范文
2015/02/26 职场文书
财政局个人总结
2015/03/04 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL
Python 数据可视化之Seaborn详解
2021/11/02 Python