本篇内容主要讲解“Python Celery定时任务实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python Celery定时任务实例分析”吧!
Celery在python中的应用除了实现异步任务(async task)外也可以执行定时任务(beat)
Celery默认任务单元由任务生产者触发,但有时可能需要其自动触发,而Beat进程正是负责此类任务,能够自动触发定时/周期性任务.
Celery 进行周期任务也很简单,只需要在配置中配置好周期任务,然后在运行一个周期任务触发器(beat)即可,具体网上看
win10 + python3 + redis + celery 5
celery_config.py配置:
代码如下(示例):
#-*-coding=utf-8-*- from datetime import timedelta from celery.schedules import crontab # 中间件 BROKER_URL = 'redis://scck2svr03:6379/6' # 结果存储 # CELERY_RESULT_BACKEND = 'redis://:scck2svr03:6379/5' CELERYD_CONCURRENCY = 20 # 并发worker数 CELERYD_FORCE_EXECV = True # 非常重要,有些情况下可以防止死锁 # CELERY_TASK_SERIALIZER = 'msgpack' # 任务序列化和反序列化使用msgpack方案 CELERY_RESULT_SERIALIZER = 'json' # 读取任务结果一般性能要求不高,所以使用了可读性更好的JSON CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 # celery任务结果有效期 CELERY_ACCEPT_CONTENT = ['json', 'msgpack'] # 指定接受的内容类型 CELERY_TIMEZONE = 'Asia/Shanghai' # celery使用的时区 CELERY_ENABLE_UTC = True # 启动时区设置 # 默认worker队列 #CELERY_DEFAULT_QUEUE = 'default' # 异步任务 CELERY_IMPORTS = ( "celery_learning.email.tasks" ) # celery beat CELERYBEAT_SCHEDULE = { 'periodic_task-every-minute': { 'task': 'celery_learning.email.tasks.add', 'schedule': crontab(minute="*/1"), 'args': (1,2) }, 'periodic_task-every-10second':{ 'task':'celery_learning.email.tasks.add', 'schedule':timedelta(seconds=10), 'args':(1,12) } }
代码如下(示例):
终端1:celery -A celery_learning.celery_app worker -l info -P gevent 终端2:celery -A celery_learning.celery_app beat
终端1
终端2
两个定时任务,一个每分钟执行,一个每10秒执行
结果如下:
到此,相信大家对“Python Celery定时任务实例分析”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。