佛山网站建设 天博,铁路建设网站多少,wordpress多站点分别部署,一键优化大师下载一、依赖包的安装
django中使用celery做异步任务和计划任务最头疼的点就是包之间版本兼容性问题#xff0c;项目一启动花花报错#xff0c;大概率都是版本问题。每次都会花很大时间在版本兼容性问题上。本例使用如下版本#xff1a; Django3.2 celery5.2.7 django-celery-b…一、依赖包的安装
django中使用celery做异步任务和计划任务最头疼的点就是包之间版本兼容性问题项目一启动花花报错大概率都是版本问题。每次都会花很大时间在版本兼容性问题上。本例使用如下版本 Django3.2 celery5.2.7 django-celery-beat2.2.1 django-celery-results2.4.0 django-redis4.11.0 redis3.5.3 如果是其他版本的django且有兼容性问题推荐一个工具pipdeptree这玩意可以清晰展示包间依赖关系和版本冲突很方便。
二、主要配置
setting.py:
INSTALLED_APPS [django_celery_results,django_celery_beat,
]
tasks.py:
from itom_service.celery_app import app, loggerapp.task()
def print_123(**kwargs):logger.info(开始打印)print(kwargs)celery_app.py:
import osfrom celery.schedules import crontab
from celery.utils.log import get_logger
from django.conf import settingsfrom kombu import Queue, Exchange
from celery import Celerylogger get_logger(celery)os.environ.setdefault(DJANGO_SETTINGS_MODULE, itom_service.settings.settings)app Celery(celery, brokersettings.CELERY_BROKER_URL, backendsettings.CELERY_RESULT_BACKEND)
app.config_from_object(django.conf:settings)
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)app.conf.update(# enable CELERY_ALWAYS_EAGERTrue can debug you tasks# CELERY_ALWAYS_EAGERTrue,CELERY_TASK_RESULT_EXPIRESNone, # 任务结果永不过期CELERY_TASK_SERIALIZERjson,CELERY_ACCEPT_CONTENT[json],CELERY_RESULT_SERIALIZERjson,CELERYD_CONCURRENCY10,CELERYD_FORCE_EXECVTrue,CELERYD_MAX_TASKS_PER_CHILD100,CELERY_DEFAULT_QUEUEdefault,CELERY_DEFAULT_ROUTING_KEYdefault,CELERY_QUEUES(Queue(default, Exchange(default), routing_keydefault),Queue(demo_queue, Exchange(demo_queue), routing_keydemo_queue),),CELERY_TIMEZONEsettings.TIME_ZONE,# 关键配置配合django_celery_beat使用admin配置的定时任务可以被顺利执行CELERYBEAT_SCHEDULERdjango_celery_beat.schedulers:DatabaseScheduler, # 这配置的计划任务会被自动同步到数据库可以在admin后台进行编辑CELERYBEAT_SCHEDULE{# schedule1execute tasks every five minutes(sync_host)sync_host: {task: itom_service.apps.user.tasks.print_123,schedule: crontab(minute*/1),args: (),kwargs: {key: 这是写死的定时任务}},}
)
三、启动worker、beat celery -A itom_service.celery_app worker -l info celery -A itom_service.celery_app beat -l info 四、admin配置定时任务 很灵活的玩法。