Celery任务调度使用:https://docs.celeryproject.org/en/stable/
目录路结构:

其中celerybeat-schedule.bak、celerybeat-schedule.dat、celerybeat-schedule.dir是任务调度过程中产生过的文件。
setting是整个架构的配置项。
start_celery是启动任务调度等待队列,等待任务分发过来。
tasks是任务分发过来后的具体任务执行内容。
other_test是任务调度过程中产生的一些数据和状态。
start_task是启动任务,把消息给celery进行分发。
setting:
# 官方文档:https://docs.celeryproject.org/en/stable/userguide/routing.html
### 基础配置 ###
# 使用Redis作为消息代理
BROKER_URL = 'redis://:@127.0.0.1:6379/1'
# BROKER_URL = 'redis://:123456@127.0.0.1:6379/1'
# 把任务结果存在了Redis
CELERY_RESULT_BACKEND = 'redis://:@127.0.0.1:6379/0'
# CELERY_RESULT_BACKEND = 'redis://:123456@127.0.0.1:6379/0'
# 任务序列化和反序列化使用msgpack方案
CELERY_TASK_SERIALIZER = 'msgpack'
# 读取任务结果一般性能要求不高,所以使用了可读性更好的JSON
CELERY_RESULT_SERIALIZER = 'json'
# 任务过期时间
CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24
# 指定接受的内容类型
CELERY_ACCEPT_CONTENT = ['json', 'msgpack']
# 指定时间为utc
TIMEZONE = 'asia/shanghai'
ENABLE_UTC = False
# 配置路由
TASK_ROUTES = {
'queue': 'my_queue'}
start_celery:
from celery import Celery
from datetime import timedelta
from celery.schedules import crontab
# celery -A [文件名] worker -l [日志等级] -P [eventlet/gevent等多任务] -c [指定同时任务数量] -Q 指定队列[默认celery]
# 使用celery help来获取更多的参数说明
# celery -A tasks worker -l info -P eventlet -c 8 -Q my_queue,celery 运行任务队列
# 实例化celery,参数是对于的文件名(好像不是很严格),include是对应的任务文件
app = Celery(__name__, include=["myCelery.tasks", ])
# 导入Celery相关配置
app.config_from_object('myCelery.setting')
# 定时任务
# app.conf.beat_schedule = {
# "each10s_task": {
# "task": "myCelery.tasks.add",
# "schedule": timedelta(seconds=10), # 每10秒钟执行一次
# "args": (10, 10)
# },
# "each1m_task": {

最低0.47元/天 解锁文章
410

被折叠的 条评论
为什么被折叠?



