101得票5回答
理解Celery任务预取

我刚刚发现了一个配置选项CELERYD_PREFETCH_MULTIPLIER(文档)。默认值为4,但我想要预取关闭或者尽可能低。我现在把它设置为1,离我想要的很接近,但还有一些事情我不理解: 为什么这个预取是个好主意?我真的看不出来有什么理由,除非消息队列与工作进程之间存在很大的延迟(在...

67得票2回答
在使用celery时,如何为特定任务设置时间限制?

我在Celery中有一个任务,正常情况下可能需要运行10,000秒。然而,我所有其他的任务都应该在不到1秒钟内完成。如何为故意长时间运行的任务设置时间限制,而不更改短时间运行的任务的时间限制?

53得票3回答
如何从非本连接自己的通道中恢复未确认的AMQP消息?

似乎我保持我的rabbitmq服务器运行得越久,未确认的消息就会越多。我希望重新排队它们。实际上似乎有一个amqp命令可以做到这一点,但它只适用于您的连接所使用的通道。我构建了一个小的pika脚本来尝试它,但我要么遗漏了什么,要么不能通过这种方式完成(那 rabbitmqctl 呢?)impo...

52得票9回答
如何优雅地重新启动Celery工作进程?

当发布一个新构建以更新工作程序中的代码时,如何优雅地重启celery工作者? 编辑: 我的意图是做类似于这样的事情。 工作者正在运行,可能正在将100 MB文件上传到S3 新的构建出现 工作者代码已更改 构建脚本向工作者发送信号 使用新代码启动新工作者 接收到信号的工作者完成现有任务后退出。

38得票4回答
一个消费多个队列的Celery Worker如何决定优先消费哪个队列?

我正在使用Celery执行异步后台任务,Redis作为后端。我对以下情况下Celery worker的行为感兴趣: 我正在使用celeryd将worker作为守护进程运行。通过-Q选项,将两个队列分配给该worker以进行消费:celeryd -E -Q queue1,queue2 工作者如...

32得票6回答
如何从一个脚本/模块 __main__ 启动 Celery worker?

我在一个模块中定义了一个 Celery 应用程序,现在我想从该模块的 __main__ 启动工作进程,即通过使用命令行上的 celery 而不是 python -m 来运行该模块。 我尝试了以下代码:app = Celery('project', include=['project.tasks...

25得票7回答
如何在不延迟任务的情况下优雅地重启Celery

我们在Django webapp中使用Celery来管理离线任务,其中有些任务可能需要运行长达120秒。 每当我们进行任何代码修改时,我们需要重新启动Celery以便它重新加载新的Python代码。我们目前的解决方案是向主Celery进程发送SIGTERM信号(kill -s 15 `cat...

21得票2回答
Celery节点失败,在重新启动时已经在pidbox上使用

我的Celery与RabbitMQ代理一起运行。 今天,我的一个Celery节点出现故障,它不执行任务,并且不响应service celeryd stop命令。 经过几次尝试后,该节点停止了,但是在启动时我收到以下消息: [WARNING/MainProcess] celery@nodena...

21得票2回答
Celery: 工作进程数 vs 并发数

一个并发数为4的工作者和两个并发数为2的工作者在同一个队列上有什么不同? 谢谢。

20得票2回答
如何在多个Django应用程序中使用celeryd作为守护进程?

我刚开始使用django-celery,希望将celeryd设置为守护进程。然而,说明文档似乎暗示每次只能为一个站点/项目进行配置。celeryd是否可以处理多个项目?或者它只能处理一个项目?如果是这种情况,有没有一种干净的方式为每个配置自动启动celeryd,而不需要为每个配置创建单独的in...