您好,登錄后才能下訂單哦!
環境準備
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教程就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。