经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
Python?Celery定时任务详细讲解
来源:jb51  时间:2022/8/1 19:09:40  对本文有异议

前言

Celery在python中的应用除了实现异步任务(async task)外也可以执行定时任务(beat)

一、Celery定时任务是什么?

Celery默认任务单元由任务生产者触发,但有时可能需要其自动触发,而Beat进程正是负责此类任务,能够自动触发定时/周期性任务.

Celery 进行周期任务也很简单,只需要在配置中配置好周期任务,然后在运行一个周期任务触发器(beat)即可,具体网上看

二、使用步骤

win10 + python3 + redis + celery 5

1.代码结构

celery_config.py配置:

代码如下(示例):

  1. #-*-coding=utf-8-*-
  2. from datetime import timedelta
  3. from celery.schedules import crontab
  4. # 中间件
  5. BROKER_URL = 'redis://scck2svr03:6379/6'
  6. # 结果存储
  7. # CELERY_RESULT_BACKEND = 'redis://:scck2svr03:6379/5'
  8. CELERYD_CONCURRENCY = 20 # 并发worker数
  9. CELERYD_FORCE_EXECV = True # 非常重要,有些情况下可以防止死锁
  10. # CELERY_TASK_SERIALIZER = 'msgpack' # 任务序列化和反序列化使用msgpack方案
  11. CELERY_RESULT_SERIALIZER = 'json' # 读取任务结果一般性能要求不高,所以使用了可读性更好的JSON
  12. CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 # celery任务结果有效期
  13. CELERY_ACCEPT_CONTENT = ['json', 'msgpack'] # 指定接受的内容类型
  14. CELERY_TIMEZONE = 'Asia/Shanghai' # celery使用的时区
  15. CELERY_ENABLE_UTC = True # 启动时区设置
  16. # 默认worker队列
  17. #CELERY_DEFAULT_QUEUE = 'default'
  18. # 异步任务
  19. CELERY_IMPORTS = (
  20. "celery_learning.email.tasks"
  21. )
  22. # celery beat
  23. CELERYBEAT_SCHEDULE = {
  24. 'periodic_task-every-minute': {
  25. 'task': 'celery_learning.email.tasks.add',
  26. 'schedule': crontab(minute="*/1"),
  27. 'args': (1,2)
  28. },
  29. 'periodic_task-every-10second':{
  30. 'task':'celery_learning.email.tasks.add',
  31. 'schedule':timedelta(seconds=10),
  32. 'args':(1,12)
  33. }
  34. }

2.启动定时任务

代码如下(示例):

  1. 终端1:celery -A celery_learning.celery_app worker -l info -P gevent
  2. 终端2:celery -A celery_learning.celery_app beat

终端1

终端2

3.执行结果

两个定时任务,一个每分钟执行,一个每10秒执行

结果如下:

总结

到此这篇关于Python Celery定时任务详细讲解的文章就介绍到这了,更多相关Python Celery 内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号