问题标签 [celery]

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 回答
724 浏览

python - 我如何冲洗芹菜中的所有东西?

我不小心在队列中添加了太多东西,现在它冻结了。不能让它做其他事情。

0 投票
3 回答
6269 浏览

python - 禁用 Celery 的 Django 调试

是否可以仅为 Django 中的特定应用程序设置 DEBUG=False?启用调试时,Celery 存在已知的内存泄漏。我有一个开发服务器,我希望 Celery 作为服务运行,无需调试,因此它不会泄漏内存,但我希望我的 Django 应用程序的其余部分使用调试,以便在测试时显示错误。

0 投票
2 回答
3362 浏览

django - 从前端使用 AJAX 查询 Celery 以了解创建的任务是否完成的最佳方法?

我正在使用 Django 和 Celery + RabbitMQ 来创建用户上传的视频的视频转换任务。现在我知道如何查询 celery 以获取状态。我的问题是在哪里保存与每个任务关联的 task_id,我应该将它保存在模型中还是 django 的缓存中?

我知道过去曾提出过类似的问题,例如这个 stackoverflow 问题,但还没有明确的答案。我知道这个问题的答案因开发人员的喜好而异,但如果有人可以就不同方法的优缺点进行教育,那就太好了。

只是为了重新迭代,我将使用 task_id 每隔一段时间从前端触发 AJAX 查询,以了解视频转换是否完成。

0 投票
3 回答
8011 浏览

rabbitmq - 芹菜(Django)速率限制

我正在使用 Celery 处理多个数据挖掘任务。其中一项任务连接到远程服务,该服务允许每个用户最多同时连接 10 个(或者换句话说,它可以全局范围内超过 10 个连接,但每个作业不能超过 10 个连接)

认为 令牌桶(速率限制)是我正在寻找的,但我似乎找不到它的任何实现。

0 投票
2 回答
15249 浏览

python - 使用 Django-Celery 重试任务 - Django/Celery

我在重试任务时遇到问题,这是测试任务的样子

我找不到任何关于如何重试装饰任务的文档,我发现的只是:

这似乎不适用于我的情况,因为self该方法没有传递变量。

编辑:

我现在尝试以下方法无济于事:

我收到以下错误:

TypeError("重试的kwargs参数不能为空。任务必须接受**kwargs,见http://bit.ly/cAx3Bg ",)

0 投票
1 回答
562 浏览

repository - 基于消息的主从框架(Java/Python/.Net)的经验

我正在设计一个从 10,000 英尺高的分布式主从系统,包括:

  • 基于网络的用户界面
  • 一个主组件,负责根据一组可配置的算法生成作业
  • 在普通电脑、HPC 集群甚至云上运行的一组工作人员
  • 一个数字存储库
  • 基于消息的中间件
  • 不同类别的任务,运行时间从 <1s 到 ~6hrs。任务是计算繁重的,而不是数据/IO 繁重的。预计任务量不会很大(据我现在所见)。大概最高100/分钟左右。

严格来说,没有必要移出 Windows 生态系统,但我会更愿意使用跨平台解决方案来保持选项开放(注意,某些任务仅适用于 Windows)。

我几乎已经将RabbitMQ作为消息传递层,Fedora-commons似乎是最成熟的现成存储库。至于我正在评估的主/从逻辑:

我查看了各种 IoC/DI 容器,但怀疑它们是否真的最适合任务执行容器并添加额外的层/复杂性。但也许我错了。

目前我倾向于使用 python 解决方案(保持轻量级),但我会对人们必须分享的任何经验/建议感兴趣,特别是对于 .net 堆栈。开源/可扩展性/弹性功能是加分项。

PS:未来更高级的需求将是用户能够直接连接到正在运行的任务(使用 Web UI)并影响其行为(实时转向)。为此需要一个直接的通信通道(通过 AMQP 执行此操作似乎不是一个好主意)。

0 投票
1 回答
1420 浏览

django - 停止芹菜的问题

我将 celeryd 作为守护进程运行,但有时无法优雅地停止它。当我发送 TERM 信号并且队列中有项目(在这种情况下service celeryd stop)时,celeryd 将停止接受新工作,并关闭所有工作进程。但是,父进程不会关闭。

我刚刚遇到了一个场景,我在两台独立的工作机器上运行 celeryd:A 和 B。在 RabbitMQ 服务器上有大约 1000 条消息时,我关闭了 A,并经历了我上面解释过的情况。B 继续工作,但随后因为服务器上留下大约 40 条消息而停滞不前。但是,我能够正确停止 B。

我重新启动了 B,看看它是否会将 40 个项目从队列中取出,但它不会。接下来,我硬杀了A,然后B抓住并完成了任务。

我的结论是父进程已经为它的子进程从我们的 RabbitMQ 服务器中保留了 40 个项目。它会正确地收割孩子,但除非我手动杀死它,否则不会将这些项目释放回 RabbitMQ。

有没有人经历过类似的事情?

我正在运行 Celery 2.2.2

0 投票
2 回答
14150 浏览

python - 为什么 RabbitMQ 不在持久队列上持久化消息?

我通过 Celery 将 RabbitMQ 与 Django 一起使用。我正在使用最基本的设置:

我导入了一个 Celery 任务并将其排入队列以在一年后运行。从 iPython 外壳:

RabbitMQ 在 celery 队列中收到这条消息:

然后我通过按 control-C 然后按“a”中止来杀死 RabbitMQ。当我再次启动服务器并使用 rabbitmqctl 检查它时,它说 celery 队列中没有消息:

芹菜队列很耐用。为什么消息没有持久化?我需要做什么才能使消息持久化?

0 投票
2 回答
703 浏览

python - 使用自定义状态时任务状态未更新

我有这样的任务:

然后我运行这个:

我可以在工作人员中看到任务已完成:

[2011-02-19 20:18:43,851:INFO/MainProcess] 任务 testcelery.test[7598b170-2877-4d76-89a0-9bcc4c9f877e] 在 20.0225799084 秒内成功:“完成”

但是 t.state 永远不会从 PROGRESS 变为 SUCCESS。我究竟做错了什么?

0 投票
1 回答
4291 浏览

python - 通过 task_id 重试 celery 中的任务

我已经启动了很多任务,但其中一些还没有完成(763 个任务),处于 PENDING 状态,但系统没有处理任何事情......可以重试这个任务,给 celery 任务 ID?