问题标签 [django-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 投票
2 回答
15249 浏览

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

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

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

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

编辑:

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

我收到以下错误:

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

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 投票
5 回答
3119 浏览

django - django 的 runserver 选项是否提供了运行其他重启脚本的钩子?

我最近一直在玩 django 和 celery。开发过程中一件烦人的事情是,每次修改任务时我都必须重新启动 celery 守护进程。当我开发时,我通常喜欢使用“manage.py runserver”,它会在我的应用程序修改时自动重新加载 django 框架。

有没有办法在 runserver 执行的重新加载过程中添加一个钩子,以便它自动重新启动我正在运行的 celery 守护进程?

或者,芹菜是否有类似的监控和重新加载更改模式,我应该将其用于开发?

0 投票
1 回答
725 浏览

python - Celery/Redis 一些(许多)消息被丢弃

我使用 Celery (2.2.4) 和 Redis (v.2.2.2) 作为我的消息代理。

知道什么会导致某些(大多数)消息随机且不一致地丢失吗?

0 投票
1 回答
1879 浏览

rabbitmq - Celery 任务重试(Celery、Django 和 RabbitMQ)

你能告诉我在芹菜中你告诉任务重试时发生了什么吗?它会在同一个工作线程中重试还是会返回给可能将其发送到其他地方的代理?

如果 worker 或 dispatcher 突然停止,重试任务会发生什么?如果任务可能丢失,是否有一些方法可以避免这种情况?如果一段时间没有收到结果,可以将每个任务保存在数据库中并重试它们吗?

或者可能是调度员有它自己的持久存储?如果工作线程在接收任务或执行任务时崩溃怎么办?

0 投票
1 回答
10521 浏览

rabbitmq - 重试丢失或失败的任务(Celery、Django 和 RabbitMQ)

有没有办法确定是否有任何任务丢失并重试?


我认为丢失的原因可能是调度程序错误或工作线程崩溃。

我打算重试它们,但我不确定如何确定哪些任务需要退出?

以及如何自动进行此过程?我可以使用自己的自定义调度程序来创建新任务吗?

编辑:我从文档中发现 RabbitMQ 从不丢失任务,但是当工作线程在任务执行过程中崩溃时会发生什么?

0 投票
1 回答
300 浏览

twitter - 与 Twitter 通信的 Celery Task

编写与具有速率限制且有时长时间丢失(无响应)的服务通信的 celery 任务时,正确的方法是什么?

我必须使用任务重试吗?如果服务缺少太多时间怎么办?有没有办法存储这些任务以便在很长一段时间后执行?

如果这是长任务中的子任务怎么办?

0 投票
6 回答
14896 浏览

rabbitmq - Celery 任务计划(Celery、Django 和 RabbitMQ)

我想要一个每 5 分钟执行一次的任务,但它会等待最后一次执行完成,然后开始计算这 5 分钟。(这样我也可以确定只有一个任务在运行)我发现最简单的方法是运行 django application manage.py shell 并运行这个:

但是对于我想以这种方式执行的每个任务,我都必须运行它自己的 shell,有没有简单的方法可以做到这一点?可能是一些国王定制 ot django celery 调度程序?

0 投票
1 回答
10323 浏览

django - Django Celery:manage.py celeryd 返回“未知命令”

我正在尝试使用 Django ORM 作为后端来设置 Celery。

我已经安装了所有必需的软件包(django-celery、djkombu),完成了 docs指定的所有内容,运行了 syncdb 以生成必要的数据库表。

不过,当我尝试通过 manage.py 命令启动 Celery 时,我收到“未知命令”错误。

我想我错过了一些关键的细节,但不知道是什么。

这就是我的 settings.py 文件的样子。谁能指出我做错了什么?

0 投票
2 回答
11167 浏览

celery - Django Celery:显示零任务/工人的管理界面

我已经使用 Django ORM 作为后端设置了 Celery。试图监视幕后发生的事情。

  • 我已经用 -E 标志 开始了celerydpython manage.py celeryd -E -l INFO -v 1 -f /path/to/celeryd.log

  • 以 1 秒的默认快照频率启动celerycam 。python mannage.py celerycam

我可以看到正在执行的任务(在 celery 日志中)和存储的结果(这些任务定期更改数据模型)。但是 Django 管理面板中的任务/工作人员页面显示零项。当我启动celeryev(显示事件/任务/工作人员)时,也会发生同样的事情。

是否需要更改任何其他配置设置才能实现监控?

我的软件堆栈:Django 1.1、Celery 2.2.4、Python 2.4