加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 芹菜工人没有消耗足够的任务

发布时间:2020-12-20 12:24:43 所属栏目:Python 来源:网络整理
导读:我和Celery有一个奇怪的问题. 我使用RabbitMQ作为消息代理和结果后端. 任务通过pickle序列化,但它们只获取数据库中文件的id. 他们获取它,对它做一些工作并将结果写回数据库. 我只是将id存储在结果后端. 我使用一个组来提供任务,并且不从其中运行任何子任务.
我和Celery有一个奇怪的问题.

我使用RabbitMQ作为消息代理和结果后端.

任务通过pickle序列化,但它们只获取数据库中文件的id.
他们获取它,对它做一些工作并将结果写回数据库.
我只是将id存储在结果后端.

我使用一个组来提供任务,并且不从其中运行任何子任务.

我有一个并发= 8的工人(prefork)

如果我启动任务,则所有8个进程都在工作(100%cpu使用率).

第一个任务完成后,奇怪的行为就开始了.
该过程不会开始新任务.
任务get初始化(我使用CELERYD_MAX_TASKS_PER_CHILD = 1)但是不会调用run方法.

所以问题是,并非所有流程都在运行.

尝试了许多配置设置但没有改变此行为.

你有什么主意吗?

它不是数据库等.本地运行消息代理和数据库.
还看了一下有花的工人,它说大部分时间大约有4个过程都是活跃的.其他任务保留,但不启动.

希望你能帮助我!

解决方法

终于想通了:

这只是我必须放置然后启动工人的一个选项.

使用-Ofair选项启动worker就可以了!

看到:
http://docs.celeryproject.org/en/latest/userguide/optimizing.html#prefork-pool-prefetch-settings

谢谢你的帮助 :)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读