Python Django2.0集成Celery4.1教程
环境准备
Python3.6
pipinstallDjango==2.0.1
pipinstallcelery==4.1.0
pipinstalleventlet(加入协程支持)
安装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__importabsolute_import,unicode_literals importos fromceleryimportCelery #设置环境变量 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__importabsolute_import,unicode_literals from.celeryimportappascelery_app __all__=['celery_app']
在某个APP中创建tasks.py文件
tasks.py
#-*-coding:utf-8-*- fromcelery.taskimporttask #自定义要执行的task任务 @task defprint_hello(): return'helloceleryanddjango...'
配置周期性任务或定时任务
再次编辑settings.py文件,添加如下内容
定时任务的配置格式参考:http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html
fromcelery.schedulesimportcrontab 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-Aproject_nameworker-linfo-Peventlet
启动定时任务或周期性任务
celery-Aproject_namebeat-linfo
这里备注一下:最好使用supervisord来管理上面这2条命令
存放任务结果的扩展
pipinstalldjango-celery-results InstallAPP INSTALLED_APPS=( ..., 'django_celery_results', )
生成数据库表:pythonmanage.pymigratedjango_celery_results
配置settings:CELERY_RESULT_BACKEND='django-db'(用数据库存放任务执行结果信息)
以上这篇PythonDjango2.0集成Celery4.1教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。