我的代码中的某些任务需要更长的时间才能执行.
检查后,我注意到虽然我的工作节点设置为并发6,而6个进程存在“做工作”,但只有1个任务显示在“运行任务”下.这里有一点视觉证明:
这是工作者的选择:
而这里是该工作者的任务选项卡,只有一个运行进程:
我发现如果我重新启动芹菜,并发性再次受到尊重,我会看到> 1运行任务,但经过一些时间/任务后,它恢复了这种行为.
解决这个间歇性问题的任何想法?
解决方法
我不知道这是否是你的用例,但是当我混合长短任务时,我遇到了类似的问题.基本上发生的一件事是,在某些时候,一个进程可以开始一个很长的运行任务,同时预取其他几个任务,阻止它们被其他进程所占用.所以我禁用了预取的东西,这是有用的,只有当你运行了很多很短的任务.
要禁用预取,您需要Celery 3.1和Ofair setting,例如:
celery -A proj worker -l info -Ofair