问题标签 [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 回答
629 浏览

python - 芹菜找不到工人

我正在使用具有这种配置的芹菜

但是当我创建一个任务时,没有一个工作人员正在使用它,也没有任何反应。我开始工人: celery worker -A tasks --loglevel=debug --hostname=worker1. 我可以从ps aux | grep celery输出中看到它们,但是当执行一些命令来获取统计信息时,就像celery -A tasks status我收到以下错误消息 一样Error: No nodes replied within time constraint.。因此,所有任务都处于PENDING状态。我相信这是一些错误配置,但无法弄清楚出了什么问题以及如何调试这样的事情。任何建议都会非常有帮助

0 投票
1 回答
279 浏览

celery - 仅在一台机器上运行 celery 定期任务

我正在使用芹菜的 django 项目。我在名为 app1 和 app2 的项目中有三个两个大模块。我为在两台不同机器上运行的应用程序创建了两个 celery 应用程序。在 app1 和 app2 中有不同的任务,我想运行不同的机器,它工作正常。但我的问题是我有一些周期性任务。我已经定义了一个以periodic_tasks它们命名的队列。我想在单独的第三台机器上运行这些定期任务。或者在第三台机器上我只想运行周期性任务,而这些周期性任务不应该从其他两台机器上执行。可以用芹菜吗?

0 投票
1 回答
442 浏览

python - 在烧瓶芹菜的任务中,工人无法将新数据插入 mysql

我有三台服务器运行我的程序,每台服务器有八个芹菜工人从 redis 获取任务。也就是说每个服务器的 celery 任务都可以被另一个服务器执行。

在每个服务器中: 提交更改并调用任务

任务功能

任务中的功能

我插入数据并提交到 MySQL 并调用 task add_ci_bj,但我无法获取数据second_id,我无法弄清楚,任何人都可以提供帮助吗?

0 投票
0 回答
1464 浏览

python - 听队列的芹菜无限任务

我有一个 celery 任务,它应该在无限循环中运行,在 RabbitMQ 中监听一些队列(与 Celery 内部无关)。当从队列中检索到消息时,这个长时间运行的任务会分派此消息以由其他任务处理。

如何在 Celery 中适当地实现这样的用例?

我使用并发 3 和 Ofair 标志运行 celery。

我目前的观察是,几天后,此设置停止处理来自 celery 内部队列的任务。似乎由于某种原因正在重新启动这个长时间运行的任务,最终所有 3 个工作人员都只忙于这个长期运行的任务,因此没有工作人员可以处理 celery 队列中的任务。

我考虑了一些基于文件的锁来确保只有一个工作人员能够获得锁并成为这个长期运行的任务,但不确定它是否是一个好的选择,我认为这个问题有更好的解决方案。

重新启动后的日志:

但是几天后我看到了(grep 复活了)

这可能意味着每个工人都在这个长期运行的任务中,但不确定这种状态是如何发生的。

0 投票
1 回答
437 浏览

celery - celery 的 app.conf.humanize(with_defaults=False) 的默认值是什么?

我正在尝试按照用户指南app.conf.humanize(with_defaults=False)中的示例打印 celery 的配置。但是我在使用时总是得到一个空字符串,我知道配置更改是有效的,因为我可以看到使用的更改。with_defaults=False.humanize(with_defaults=True)

我猜想添加配置app.conf.config_from_object('myconfig')是将配置设置加载为“默认值”,那么有没有办法以非默认方式在模块myconfig中加载配置?

这是我的源代码:

我开始使用 celeryenv PYTHONPATH=. celery worker --loglevel=INFO并打印config: (如果我更改为with_defaults=True我得到预期的完整输出)。

0 投票
1 回答
1428 浏览

python - 纠正错误配置的 celery(使用 supervisord 运行)

我开始为 Python/Django Web 项目中的任务运行 celery,该项目托管在具有 8 个内核或 CPU 的单个 VM 上。我现在需要改进配置——我犯了菜鸟错误。

supervisor用来处理芹菜工人和殴打。在/etc/supervisor/conf.d/中,我有两个与工人相关的 conf 文件 -celery1.confcelery1.conf. 我是不是该...

1)删除其中之一?两者都产生不同的工人。即以前的 conf 文件有command=python manage.py celery worker -l info -n celeryworker1. 后者有command=python manage.py celery worker -l info -n celeryworker2。这里权威地规定每台机器运行 1 个工人。

2)在conf中修补?numprocs目前celery1.conf,我已经定义了numprocs=2. 在celery2.conf中,我定义了numprocs=3* (见后面的页脚)。同时,在 中/etc/default/celeryd,我有CELERYD_OPTS="--time-limit=300 --concurrency=8"。发生什么了?主管numprocs优先concurrency于 celeryd,还是什么?我应该设置numprocs=0吗?


*两个文件的总 numprocs = 2+3 = 5。这检查出来了。sudo supervisorctl显示 5 个 celery 工作进程。但是在 newrelic 中,我看到celeryd运行了 45 个进程。有没有搞错?!即使主管创建的每个 proc 实际上都产生了 8 个 proc(通过 celeryd),total numprocs x concurrency = 5 x 8 = 40. 这比 newrelic 显示的 45 少 5。需要指导来纠正这些错误。

对比截图:

根据supervisorctl,5个芹菜工人

对比

根据 newrelic,有 45 个正在运行的 celery 进程

0 投票
1 回答
902 浏览

ubuntu - celery 守护进程:配置文件中未找到/celeryd 错误

我按照用户指南SO 上的这个问题在Ubuntu 上妖魔化了 celery 。简要地,

从 celery github repo下载初始化脚本celeryd 。

将用户指南中的配置文件保存为 celeryd.conf(与celeryd上面的 init-script 区分开来)并编辑设置。

我有一个额外的步骤将上述两个文件从 Windows 机器传输到 Ubuntu。

然后

但是,运行时

它抛出错误:

该数字9是配置文件中的第一个非注释行/etc/default/celeryd

到底是怎么回事?我应该如何解决它?谢谢。

0 投票
0 回答
88 浏览

python - 在组任务已经运行时更改和弦组

chord在我的定期任务中运行以下内容:

每个任务 ( task_A1, task_A2... , task_An) 可能需要大约 5-10 分钟才能运行。

考虑以下场景:在周期性任务(每小时)期间,task_A1..task_An并行运行。现在,有人从另一个流程触发了外部task_A1'任务。我的目标是仅停止和替换当前的运行task_A1task_A1'保持(不停止task_A2.. task_An)流原样 - 这是等待(task_A2, ... ,task_An新的task_A1')组完成并启动task_B.

我目前的解决方案是撤销task_A1&task_B并将新任务task_A1'&添加task_B'到队列中 - 但我想知道如何与已经运行的创建这种新组合task_A2, ... , task_An,以实现类似:

我通过撤销任务并在 CeleryRouter 中“重新连接”它们来做到这一点。我正在从celeryapp.control.inspect().active()和中提取任务celeryapp.control.inspect().reserved()。我想知道是否有优雅的方式来实现我的目标。

谢谢。

0 投票
0 回答
164 浏览

python - 芹菜守护进程生产无法导入芹菜错误

我遵循 Celery 文档的所有说明。首先,我按照此链接创建生产过程,这是我的应用程序代码。

1-test_celery/celery.py:-

2-test_celery.task.py:-

3-:我的配置文件 /etc/default/celeryd 按照说明:

** 当我运行sudo service celeryd start我的生产工人正在启动但我的项目给了我无法导入 Celery 模块的错误。我阅读了一些 SO 答案,但无法解决我的问题。** 谢谢你的时间

0 投票
0 回答
1181 浏览

python-2.7 - 没有 django 的芹菜守护进程生产本地配置文件

我是芹菜的新手。我按照 celery4.1 文档提供的说明创建了一个项目。下面是我的项目文件夹和文件:

1-celery_app.py

2-tasks.py

我从 Celery github 项目中复制了 celeryd 和 celerybeat 文件并复制到 /etc/init.d/ 并使它们成为可执行文件。然后我创建 celeryd 和 celerybeat 文件到 /etc/default/.

我- /etc/default/celeryd

II- /etc/default/celerybeat

之后我创建 celery 用户和组。

这是我的问题,我使用命令成功运行了这个项目,但是当我使用ORcelery -A test_celery.celery_app worker -l info --beat启动我的项目时sudo service celeryd startsudo service celerybeat start

它给了我导入错误,没有模块名称 test_celery.celery_app。

请给我一个提示我做错了什么。