问题标签 [celeryd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3236 浏览

celery - 芹菜多没有按预期工作

我有这个我的项目文件夹结构

tasks 有一个名为ExamineColumns

我使用启动工人celery worker -A api.jobs --loglevel=Info

它工作正常,我可以运行任务。

这是 celery 检查命令的输出

但是当我尝试多模式时,它根本不起作用。我试图通过跑步来跑步

但它根本没有开始。

我不确定为什么它不起作用

0 投票
3 回答
5306 浏览

python - 在 celery 中,如何获取特定任务名称的所有任务的任务状态?

celery中,我想获取特定任务名称的所有任务的任务状态。对于尝试下面的代码。

现在我在这段代码中得到了空列表。

0 投票
2 回答
13564 浏览

rabbitmq - 芹菜节点失败,在 pidbox 上已在重启时使用

我让 Celery 与 RabbitMQ 代理一起运行。今天,我的 Celery 节点出现故障,它不执行任务,也不响应service celeryd stop命令。重复几次后,节点停止了,但在开始时我收到以下消息:

谁能建议如何解锁进程邮箱?

0 投票
0 回答
939 浏览

python - Celery 工作进程在运行几天后消耗 100% CPU

我向 Celery 项目提交了一个问题,在此处查看详细信息:Celery worker process CPU 100%

运行 Celery 工作进程几天后,我们发现 Python 进程消耗了 100% 的 CPU 负载。我使用 strace 转储运行时堆栈跟踪,发现 CPU 100% 进程不断池和读取。它必须与 Consumer.consume_message 相关。

有人有想法吗?

0 投票
1 回答
313 浏览

python - 芹菜工人启动时未加载Django模型

我正在使用 Django-Celery 3.0.23。

当我运行命令python manage.py celery worker时,模型不会立即加载。

这与 中所见的相反python manage.py celeryd

为了测试这一点,我在我的models.py.

我读到这celeryd是一个较旧的命令celery worker

我是使用 django celery 的新手。我错过了什么吗?

0 投票
0 回答
1484 浏览

python - 为长时间运行的任务配置 Python Celery

我有一个设置,我在 AWS 现场实例上运行长时间的幂等任务,但我无法弄清楚如何设置 Celery 以优雅地处理在任务中被杀死的工人。

目前,如果一个工作人员被杀死,则该任务被标记为失败(WorkerLostError)。我发现有关该主题的文档有点精简,但它建议您应该在这种情况下使用 CELERY_ACKS_LATE。这对我不起作用,该任务仍被标记为失败。

当我有 CELERY_ACKS_LATE=False 时,任务只是停留在 PENDING 状态——所以至少现在我可以说它失败了——这是一个好的开始。

这是我目前的配置设置:

我有一个在主服务器上旋转的任务,它检查未完成任务的结果并处理更新我的本地数据库以将任务标记为完成(并使用结果执行工作)。在这个阶段,我认为我将不得不捕捉“工人过早退出:信号 15 (SIGTERM)”场景并重试该任务。

感觉这一切都应该由 celery 处理,所以我觉得我错过了配置中的一些基本内容。

给定幂等任务和将失败的工人,配置 celery 以使这些任务由不同的工人接手的最佳方法是什么?

0 投票
1 回答
198 浏览

python - Celery:有选择地从 Python 任务中清除队列

有时我会遇到这样的情况,即 Celery 队列会在意外不必要的任务上堆积起来,从而阻塞服务器。例如,代码发射了 20 000 个任务而不是 1 个。

如何检查 Celery 队列包含的 Python 任务,然后有选择地摆脱某些任务?

任务是使用标准的 Celery 装饰器定义和启动的(如果重要的话):

堆栈:Django + Celery + RabbitMQ。

0 投票
4 回答
15813 浏览

python - 守护芹菜

按照此处找到的说明,我将脚本从 github复制到/etc/init.d/celeryd中,然后使其可执行;

我按照说明创建了配置文件/etc/default/celeryd

注意:我在 CELERYD_OPTS 中添加了--config=celeryconfig部分。

我创建了一个新的用户芹菜

然后创建组芹菜并向其添加用户:

我使用 chown celery:celery 作为文件夹:

/var/运行/芹菜/

/var/log/celery/

当我尝试启动服务时,我没有收到任何错误提示:

但状态给了我“没有找到 pids”:

事实上, ps -ef 没有给出任何结果,也没有创建 PID 文件或日志文件:

附加信息:

我错过了什么?我应该在哪里寻找更多关于为什么 celeryd 没有启动的线索?

0 投票
0 回答
523 浏览

python - 芹菜路由到多个任务而不是主机

我正在将我从 Golang(使用 redis)编写的应用程序移植到 Python,我很想使用 Celery 来完成我的任务队列,但是我有一个关于路由的问题......

我的应用程序通过 REST POST 接收“事件”,其中每个“事件”可以是不同的类型。然后我想让后台工作人员等待某些类型的事件。这里需要注意的是,一个事件可能导致处理该事件的任务不止一个。例如:

一些/lib/a/tasks.py

一些/lib/b/tasks.py

总而言之......我希望能够运行 N 数量的工人(跨 X 台机器)并且这些作品中的每一个都将注册 Y 数量的任务,例如:a.handle_event_typeA、b.handle_event_typeA 等。 . 并且我希望能够将任务插入队列并让一名工作人员拿起任务并将其路由到工作人员中的多个任务(即到 a.handle_event_typeA 和 b.handle_event_typeA)。

我在这里阅读了 Kombu 的文档和这里的 Celery 的路由文档但我似乎无法弄清楚如何正确配置它。

一段时间以来,我一直在使用 Celery 进行更传统的工作流程,我对它的功能集、性能和稳定性感到非常满意。我会直接使用 Kombu 或一些自制解决方案来实现我需要的东西,但如果可能的话,我想使用 Celery。

多谢你们!我希望我不会在这个问题上浪费任何人的时间。

编辑 1

在考虑了这个问题一段时间后,我想出了一个解决方法来实现我想要的 Celery。这不是优雅的解决方案,但效果很好。我正在使用 django,它是缓存抽象(您可以直接使用 memcached 或 redis 之类的东西)。这是我想出的片段:

然后我要做的是通过执行以下操作来订阅不同模块中的任务:

然后我可以在处理 REST 事件时调用发布任务方法。

0 投票
2 回答
6745 浏览

django - celery django 守护进程上的多个工作人员和多个队列

我正在使用 celery-django 在我的站点后端对任务进行排队。我正在尝试创建一个设置,其中有两个名为“low”和“high”的队列以及两个工人 W1 和 W2。我希望他们通过以下方式使用队列中的任务:

W1 <-- 低,高

W2 <-- 高

通常可以这样做。

打开终端 1 并输入 $celery worker -n W1 -Q low,high

打开终端 2 并输入 $celery worker -n W2 -Q high

但是我试图通过celeryd daemon做同样的事情。

我正在按照链接中给出的步骤操作: http: //celery.readthedocs.org/en/latest/tutorials/daemonizing.html#example-configuration 但是可用的选项似乎不足以满足要求。

请帮助我一些我不知道的配置可以使它成为可能。除非真的有必要,否则我宁愿不运行多个守护进程或使用其他工具(如 supervisord)(也许你也可以就此向我提出建议)。