时间:2021-05-22
环境准备
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 = TrueUSE_L10N = TrueUSE_TZ = FalseCELERY_BROKER_URL = 'amqp://guest:guest@localhost:5672'在settings.py同级目录创建celery.py
celery.py
注意替换: project_name
# -*- coding: utf-8 -*-from __future__ import absolute_import, unicode_literalsimport osfrom celery import Celery# 设置环境变量os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings')# 注册Celery的APPapp = 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_literalsfrom .celery import app as celery_app__all__ = ['celery_app']在某个APP中创建tasks.py文件
tasks.py
# -*- coding: utf-8 -*-from celery.task import task# 自定义要执行的task任务@taskdef print_hello(): return 'hello celery and django...'配置周期性任务或定时任务
再次编辑settings.py文件,添加如下内容
定时任务的配置格式参考:http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html
from celery.schedules import crontabCELERY_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-resultsInstall APPINSTALLED_APPS = ( ..., 'django_celery_results',)生成数据库表:python manage.py migrate django_celery_results
配置settings:CELERY_RESULT_BACKEND = 'django-db' (用数据库存放任务执行结果信息)
以上这篇Python Django2.0集成Celery4.1教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Django2.0中编写models类下的ForeignKeybook=models.ForeignKey('BookInfo')django2.0与之前的1.
Django2.0中编写models类下的ForeignKeybook=models.ForeignKey('BookInfo')django2.0与之前的1.
TurboC2.0集成环境1.5TurboC2.0集成环境TurboC2.0是美国Borland公司开发的一个C语言集成环境,它集编辑、编译、连接及运行功能于一
Django2.0通过URL访问上传的文件(pdf、picture等)Django是一个成熟的web框架,基于python实现,有很多的优点,很容易快速上手(详
如果是django2.0必须下载xadmin2.0不然很多地方不兼容xadmin2.0下载地址https://github.com/sshwsfc/xadmin