问题标签 [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.
celery - Celeryd 不会处决我的工人
我正在尝试在 celery 中守护我的任务,我已经在没有守护进程的情况下进行了测试,并且运行良好。
但我不能像教程所说的那样守护进程(http://docs.celeryproject.org/en/latest/tutorials/daemonizing.html#daemonizing)我有我的文件:
solr_desa.py
芹菜配置文件
还有 /etc/default/celeryd
我使用https://github.com/celery/celery/blob/3.0/extra/generic-init.d/celeryd中的默认 celeryd 执行,但任务只是排队,但看起来没有工人 :(
我的配置错误在哪里?:(
python - Celeryd时间限制错误
运行状态命令时出现以下错误:-
我正在关注这个博客
如何调试此错误?
我也检查了这个问题。那里的答案没有帮助。
django/celery - 芹菜状态:错误:没有节点在时间限制内回复
编辑:-
检查 celery beat 的日志后,我发现了以下错误
celery - 将 Celeryd 部署到 AWS Beanstalks
我正在使用 Celery 运行长时间运行的后台进程的 python 网站。我计划将我的网站与 celery worker 一起部署到 Beanstalk 容器中。
请分享您的过期或想法如何在 Beanstalk 容器中部署和运行 celeary 工作者作为恶魔。
python - Python Celery 任务重启 celery worker
在 celery 中,有没有一种简单的方法来创建一个(一系列)任务,我可以用它来自动重启一个工作人员?
目标是让我的部署在每次从 github 获取新源时自动重新启动所有子 celery 工作人员。因此,我可以向该机器上的管理 celery 实例发送一个 restartWorkers() 任务,该任务将杀死(实际上是停止等待)该机器上的所有 celery 工作进程,并使用新模块重新启动它们。
该计划是让每台机器拥有:
- 管理节点 [Queues: Management, machine-specific] - 负责管理机器上的其余工作人员,在必要时启动新节点并杀死旧节点
- 工作节点 [队列:特定于 git 修订版、特定于工作人员、特定于机器] - 实际负责完成工作。
看起来我需要的代码在 dist_packages/celery/bin/celeryd_multi.py 中的某个位置,但是对于启动工作人员来说,源代码相当不透明,我不知道它应该如何工作或它实际上在哪里启动节点。(看起来shutdown_nodes是调用杀死进程的正确代码,我正在慢慢调试我的方式来弄清楚我的论点应该是什么)
是否有我可以调用的函数/函数 restart_nodes(self, nodes) 或者我将在 python 中运行 shell 脚本?
/另外,有没有比杀死和重新启动进程更简单的方法将源重新加载到 Python 中?如果我知道重新加载模块确实有效(实验表明它没有。在我重新启动该过程之前,对功能的更改不会渗透),我会这样做而不是间接使用管理节点。
编辑:我现在可以关闭,多亏了广播(谢谢 mihael。如果我有更多的代表,我会投票)。有什么方法可以广播重启?有 pool_restart,但这不会杀死节点,这意味着它不会更新源。
我一直在研究 celery.bin.celeryd:WorkerCommand().run() 中的一些幕后源代码,但是在 run 调用之前和之后发生了一些奇怪的事情,所以我不能只调用它功能并完成,因为它崩溃了。从 python 脚本调用 shell 命令来运行另一个 python 脚本只是 0 有意义,我不敢相信我是第一个想要这样做的人。
scheduled-tasks - 从多个队列消费的 Celery 工作人员如何决定从哪个队列开始消费?
我正在使用 Celery 执行异步后台任务,使用 Redis 作为后端。我对芹菜工人在以下情况下的行为感兴趣:
我正在使用celeryd
. 该工作人员已通过-Q
选项分配了两个队列以供使用:
工人如何决定从哪里获取下一个要消费的任务?它会随机消耗来自queue1
或的任务queue2
吗?它是否会优先获取 from ,queue1
因为它在传递给的参数列表中是第一个-Q
?
celery - 在芹菜中,让多个工人处理同一个队列的目的是什么?
在 celeryd-multi 的文档中,我们找到了这个例子:
(从这里:http ://docs.celeryproject.org/en/latest/reference/celery.bin.celeryd_multi.html#examples )
什么是一个实际的例子,说明为什么在一个主机上让多个工作人员处理同一个队列会很好,就像上面的例子一样?这不是设置并发的目的吗?
更具体地说,以下两行(A和B)之间是否有任何实际区别?:
A:
乙:
我担心由于我不理解这种实际差异而错过了一些关于任务队列的宝贵知识,如果有人能启发我,我将不胜感激。
谢谢!
python - 难以在 Celery 中更改 Python 方法签名
这可能是一个明显的船长风格的问题,但我觉得我错过了一些东西。
我继承了一个创建 Celery 任务的 Python WSGI 应用程序。看起来像这样:
该process_request
方法如下所示:
以上所有工作。我尝试向 process_request 添加时间戳,因此调用如下所示:
我将process_request
方法更改为:
那没有用。未处理请求。我检查了我的 celeryd 日志文件,发现了这个:
我不知道我做错了什么。有人有想法么?
celery - 在给定时间点执行的 celery 任务数
我正在尝试动态地异步创建一堆芹菜任务。假设我异步启动了 1000 个任务,而我只有一个 celeryd 进程正在运行来执行任务。celery 会创建多少个线程来处理这些任务?
如果 celery 自动启动多个线程来处理任务队列,我如何限制 celery 在给定时间点仅执行 100 个线程。
谢谢。
python - 芹菜工人迷路了
我们的部署过程使用终止进程列表中的所有 celery 进程来重新启动 celery。
有时我会在芹菜原木中看到“工人丢失”。如果发生这种情况时任务正在运行,该任务会重新运行还是会丢失?我们正在使用redis。
django - Django Celerybeat PeriodicTask 运行远远超出预期
我正在为 Django、Celery、djcelery 和 PeriodicTasks 苦苦挣扎。
我创建了一个任务来为 Adsense 提取报告以生成实时统计报告。这是我的任务:
我正在使用 Celery 和 RabbitMQ。这是我的设置:
乍一看,一切似乎都正常,但在打开记录器并观察它运行后,我发现它至少连续四次运行该任务 - 有时更多。它似乎也每分钟运行一次,而不是每两分钟运行一次。我尝试将 run_every 更改为使用 crontab,但我得到了相同的结果。
我正在使用主管开始 celerybeat。这是我使用的命令:
关于为什么它没有按预期工作的任何想法?
哦,还有一件事,在日期变化之后,它会继续使用它第一次运行的日期范围。因此,随着时间的推移,它会继续获取任务开始运行当天的统计信息 - 除非我在某个时候手动运行任务,否则它会更改为我上次手动运行它的日期。有人能告诉我为什么会这样吗?