celery - 谁在 celery 中等待 apply_async(countdown=10)
问题描述
我以并发 20 运行 celery worker
"-c", "20", "-P", "eventlet", "-Ofair"
并在另一个任务中为这个工作队列生成 20 个任务包
async_call.apply_async(
(call_id, engine),
expires=60,
countdown=60*random(), # random delay, to prevent spikes
)
在flower
查看器中,我看到不超过 20 个任务。
问题是:谁在等待倒计时?它在队列里面吗?还是在工作进程内部(接受任务的工作人员的一些空闲时间)?
如果它在工作人员内部,那么要使用所有 CPU,我需要根据工作时间的倒计时时间(空闲时间)的分数来增加并发性。
解决方案
等待是在每个 celery 工作者拥有的进程/线程中,如果工作者正在等待任务,它将轮询代理以获取新任务。
推荐阅读
- java - '警告 BG8102:X 类具有未知的基本类型 Y' 警告,同时在 xamarin 中绑定 java 代码
- azure - Azure Keyvault 可供各种订阅中的服务主体访问
- javascript - HTML 按钮仅适用于网页重新/加载
- c# - 如何制作可以返回结果或未经授权的 ASP.NET Web API 控制器方法?
- algorithm - 这个 BFS 算法的时间复杂度是多少?
- r - 如何在交互图中显示标准化 y 分数
- python-3.x - 如何用集合填充数组
- mysql - laravel [1049] 未知数据库
- android - Android - Changing Gradle.properties according to flavor
- swift - How to add a custom view from a xib to a UIScrollView?