celeryd相关内容

在一台机器上的芹菜工人之间共享内存区域

我想在 celery 中的工作节点之间共享小块信息(例如缓存的授权令牌、统计信息...). 如果我在我的任务文件中创建一个全局变量,它对于每个工作人员来说都是唯一的(我的工作人员是进程,并且有 1 个任务/执行的生命周期). 最佳实践是什么?我是否应该在外部 (DB) 保存状态,创建一个老式的共享内存(由于 celery 中不同的池实现可能会很困难)? 提前致谢! 解决方案 ..
发布时间:2021-07-23 20:23:10 Python

芹菜试图连接到错误的经纪人

我的芹菜配置 BROKER_URL ='redis://127.0.0.1:6379'CELERY_RESULT_BACKEND ='redis://127.0.0.1:6379' 但无论何时运行芹菜,都会出现此错误 消费者:无法连接到amqp://guest@127.0.0.1:5672//:[Errno 111]连接被拒绝.2.00秒后重试... 为什么它不连接到我正在运行的Re ..
发布时间:2021-04-21 19:55:13 Python

芹菜异常处理

假设我有此任务定义: def some_other_foo(输入)引发Exception('这不被处理!')返回输入@ app.task(bind = True,max_retries = 5,soft_time_limit = 20)def some_foo(self,someInput = {}):response =“"尝试:响应= some_other_foo(someInput)例外 ..
发布时间:2021-04-21 19:52:56 Python

在同一台服务器上运行多个Django Celery网站

我正在使用apache2虚拟服务器在同一服务器上运行多个Django / apache / wsgi网站。我想使用celery,但是如果我为多个网站启动celeryd,则所有网站都将使用我启动的最后一个celeryd实例的配置(日志,数据库等)。 是否可以使用多个Celeryd(每个网站一个)或所有所有Celeryd?似乎应该可行,但是我找不到方法。 解决方案 这个问题让人头疼,我没 ..
发布时间:2020-10-23 03:13:42 其他开发

使用celeryd作为带有多个Django应用程序的守护进程?

我刚刚开始使用 django-celery ,我想将celeryd设置为守护程序。 说明似乎建议只能在以下位置为一个站点/项目配置它一个时间。芹菜可以处理多个项目,还是只能处理一个项目?而且,如果是这种情况,是否有一种干净的方法可以将celeryd设置为针对每个配置自动启动,这需要我为每个配置创建一个单独的初始化脚本? 解决方案 就像所有有趣的问题一样,答案是这取决于。 :) 绝对有 ..
发布时间:2020-09-30 02:49:51 其他开发

将生成的列表映射到celery任务的最佳方法

我正在寻找有关将一个任务生成的列表映射到芹菜另一个任务的最佳方法的建议。 假设我有一个名为 parse ,用于解析PDF文档并输出页面列表。然后,需要将每个页面分别传递给另一个名为 feed 的任务。所有这些都需要放入一个名为 process 的任务中,所以,我可以做到的一种方法是: / p> @ celery.task def进程: pages = parse.s(pa ..
发布时间:2020-09-30 02:39:51 其他开发

从多个队列中消费的芹菜工人如何决定从头开始消费哪个?

我正在使用Celery执行异步后台任务,并以Redis为后端。我对以下情况下芹菜工人的行为感兴趣: 我正在使用 celeryd 。通过 -Q 选项,已为该工作人员分配了两个队列来消费: celeryd -E -Q queue1,queue2 工人如何决定从何处取货是从 queue1 或 queue2 中随机消耗一个任务吗? 是否会优先从 queue1 进行获取,因 ..
发布时间:2020-09-30 02:36:01 其他开发

每个重试周期增加芹菜重试时间

我确实像芹菜一样重试芹菜,例如: @task() def add( x,y): 试试: ... 例外,例外: add.retry(exc = exc,countdown = 60)#覆盖默认值和 #一分钟后重试 每次为此发生重试时,如何增加重试倒计时工作-例如60秒,2分钟,4分钟,依此类推,直到出现MaxRetriesExceededed? 解决方案 由于 ..
发布时间:2020-09-30 02:34:56 Python

如何从脚本/模块__main__启动Celery worker?

我已经在一个模块中定义了一个 Celery 应用程序,现在我想从其 __ main__中的同一模块启动worker。 code>,即通过在命令行中使用 python -m 而不是 celery 运行模块。我尝试过这个: app = Celery('project',include = ['project.tasks']) #进行所有特定于项目的配置 #导入此模块时应发生的 如果__ ..
发布时间:2020-09-30 02:28:40 Python

为芹菜设置特定任务的时间限制

我在Celery中有一项任务,在正常运行时可能会运行10,000秒。但是,我所有其他任务都应在不到一秒钟的时间内完成。如何在不更改短期任务的时间限制的情况下为故意长期运行的任务设置时间限制? 解决方案 您可以设置任务时间限制(硬和/或软件)。 来自celery.exceptions导入SoftTimeLimitExceeded @ celery.task(time_limit ..
发布时间:2020-09-30 02:22:39 其他开发

了解芹菜任务预取

我刚刚发现有关配置选项 CELERYD_PREFETCH_MULTIPLIER (文档)。默认值为4,但是(我相信)我希望预取尽可能少。我现在将其设置为1,这与我要查找的值足够接近,但是仍然有些我不理解的东西: 为什么这样预取一个好主意?我并没有真正找到原因,除非消息队列和工作线程之间存在大量延迟(就我而言,它们当前正在同一主机上运行,​​最糟糕的是最终可能在同一数据中的不同主机上运行)中央 ..
发布时间:2020-09-30 02:20:35 Python

芹菜守护

在此处中找到了以下说明,我复制了$ ll /etc/init.d/celeryd -rwxr-xr-x 1 root root 9481 Feb 19 11:27 /etc/init.d/celeryd* 我按照说明创建了配置文件/etc/default/celeryd : # Names of nodes to start # most will only start one n ..
发布时间:2020-05-01 08:51:56 服务器开发

如何优雅地重新启动芹菜而不拖延任务

我们使用Celery与我们的Django webapp来管理离线任务;这些任务中的一些可以运行长达120秒。 每当我们进行任何代码修改时,我们需要重新启动Celery以重新加载新的Python代码。我们目前的解决方案是将一个SIGTERM发送到主Celery进程( kill -s 15`cat / var / run / celeryd.pid` ),然后等待它死亡并重新启动它( pytho ..
发布时间:2017-05-28 07:11:16 服务器开发

芹菜工作人员如何优雅地重启?

在发布新版本以更新工作人员的代码时,如何优雅地启动芹菜工作? 编辑: 我打算做的是这样的事情。 工作人员正在运行,可能是将一个100 MB的文件上传到S3 新的构建来自 代码有变化 构建脚本向工人发送信号 使用新代码启动新员工 解决方案 >重新启动工作人员的新推荐方法记录在这里 http://docs.celeryproject.org/en/latest/userg ..
发布时间:2017-05-28 06:34:40 其他开发

celeryd进程的数量取决于--concurrency设置?

我们正在管理Celery,并以开头。 celeryd --events --loglevel = INFO --concurrency = 2 但是,这会创建一个最多三层的过程图, celeryd进程(Supervisor产生一个celeryd,它产生几个其他,它再次产生进程)。我们的机器有两个CPU内核。 所有这些进程是否都在处理任务?也许有些只是工人池? ..
发布时间:2016-12-26 19:24:13 Python