13

排查 Celery 队列的任务问题

 1 year ago
source link: https://acejoy.com/2023/09/26/726/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

排查 Celery 队列的任务问题

2023/9/26 0 Comments 198 Views 0 Times

近日使用 Celery 队列系统构造服务,遇到队列任务无法执行的问题,经过排查找到原因,记录一下,防止日后忘记。

Celery 是一套使用Python开发的非常优秀的任务队列系统,稳定、高效,用途广泛。具体信息可以参考官网。

根据需求,我使用Celery做了多个队列,后期又准备加入定时执行任务。但是添加了必要的代码和配置之后,无论怎么测试,这个需要定时执行的任务都无法执行。

Celery 定时队列代码不执行,排查的思路和办法是摸索出来的。

任务代码打印log – 无效,因为根本没执行。主要是连错误信息也看不到,光猜测是不行的。

做了如下操作,使用日志系统输出到文件。因为celery队列会创建进程启动任务,要考虑进程隔离的问题。还有,使用调试模式启动celery,主要是加参数,还可以输出到文件。仍然没有看到任何信息。

我决定打开Redis查看一番,因为这个celery使用了Redis服务器作为broker,相关的执行情况会存储在Redis系统里面。

打开具体的任务记录条目,发现了线索:需要执行的任务代码,没有注册,报告了错误。

然后就开始排查,为何任务没有注册上。最后发现,在同时使用任务路由系统的时候(task route),注册的key值不正确,普通的任务直接写函数名就可以,但是标记为”beat” 类型的周期任务,必须全路径注册,前面的模块包名称不能省略。

添加好之后,再次测试,celery的debug信息有输出了,具体执行错误信息也有了。代码执行的log也有了内容,至此排查结束,问题解决。

</div


Recommend

  • 11

    Celery+django如何显示任务的执行进度条 Celery单词中文的意思是“芹菜”,也不知道为什么人家喜欢给起个菜名,实际从功能上跟芹菜一点也扯不上关系,非得往上靠难道国外吃芹菜是在后面吃?大家都知道,如果我们在后端执行一个时间比较...

  • 8

    Python中使用Celery和Redis构建任务队列 | blutv您拥有的微服务越多,您就越需要在微服务或计划作业或后台任务之间进行异步消息传递。后台任...

  • 16

    正确使用Celery中的revoke来取消任务 2021-09-04 17:17:55 +08  字数:1295  标签: Python 取消操作

  • 16

    Django动态添加定时任务之django-celery的使用 定时任务和周期任务在我们日常工作中应用广泛,例如定时发布、周期巡检等,通常我们会借助Linux下的Crontab来实现,但如何将这一功能搬进我们自研的运维系统呢?借助django-celery即可轻松完成...

  • 6

    Django配置Celery执行异步任务和定时任务 原生Celery,非djcelery模块,所有演示均基于Django2.0 celery是一个基于python开发的简单、灵活且可靠的分布式任务队列框架,支持使用任务队列的方式在分布式的...

  • 16

    Python Celery 任务执行有时成功有时失败(提示NotRegistered) 原创 tzchao 2022-03-31 11:...

  • 13
    • tomoncle.github.io 3 years ago
    • Cache

    celery分布式任务队列

    celery分布式任务队列 Posted on...

  • 6
    • yinwc.github.io 3 years ago
    • Cache

    基于Celery的后台任务

    Celery简介Celery 是一个异步任务队列/基于分布式消息传递的作业队列,Celery 是一个强大的分布式任务队列,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行。通常使用它来实现异步任务(async task)和定时任务(crontab)

  • 9

    本文首发于公众号:Hunter后端 原文链接:celery笔记五之消息队列的介绍 前面我们介绍过 task 的处理方式,将 task 发送到队列 queue,...

  • 9

    Celery多队列解决生产环境下的任务优先级问题 运维自动化系统需要处理大量的周期任务,例如上篇文章

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK