我的代码中的一些任务执行时间越来越长.
经过检查,我注意到虽然我将我的工作节点设置为并发6,并且存在6个进程以"正常工作",但只有1个任务显示在"正在运行的任务"下.这是一个小小的视觉证据:
以下是工人选项:

这里是该工作人员的任务选项卡,只有一个正在运行的进程:

我发现如果我重新启动celery,并发性再次受到尊重,我会看到> 1运行任务,但经过一段时间/任务后,它会恢复到这种行为.
解决这个间歇性问题的任何想法?
我有以下设置:
我在码头工人的容器中运行芹菜,所以当我重建码头工人时,芹菜工人没有优雅地关闭.这是可以的,如果没有确认任务,因为一旦工人再次在新的docker容器中,经纪人会将它们发回去,但在其他情况下,他们将会丢失.
在花管理面板中,预取任务已收到状态.
我仔细阅读了官方文档和相关问题,直觉上我觉得我的设置中的预取任务得到了认可.是这样吗?
celery 是否支持在给定任务 id 之前返回待处理的任务编号?
例如,没有 celery worker 启动,我推送 task1、task2、task3,三个都挂了,现在,我想要的是,如果我给 task3,它告诉我在 3 之前有 2 个挂起的任务。
我使用 celery celery 4.1,rabbitmq 3.5.4 作为代理,redis 3.2.9 作为结果后端。
虽然我可以通过管理 API(例如 pyrabbit 包中的 get_queue_depth )获取兔子队列深度,但这会导致整个队列深度,而不是指定任务 id 之前的待处理数。
而且我知道我可以自己维护一个队列来管理推送的任务 ID。
但我想知道芹菜或rabbitmq本身是否有任何简单的方法。
谢谢。