问题标签 [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 投票
1 回答
1122 浏览

mongodb - 使用 Celery 时打开的 mongoDB 连接过多

我正在使用 Celery 下载提要和调整图像大小。然后使用 mongoengine 将提要和图像路径存储在 MongoDB 中。当我在运行任务后检查当前连接 (db.serverStatus()["connections"]) 时,我有 50-80 个“当前”连接,这些连接保持打开状态,直到我关闭 celeryd。有没有人遇到过这个问题和/或你知道我能做些什么来解决它?

谢谢,肯齐奇

0 投票
1 回答
3712 浏览

celery - 如何诊断挂起的芹菜工人

我开始为 Django 项目使用 Celery。出于本地开发目的,我已根据这些说明http://ask.github.com/celery/tutorials/otherqueues.html#django-database使用 djcelery 和 djkombu(数据库传输)进行设置,但计划在上使用 rabbitmq生产服务器。

我发现它有效,但一名或多名工人会随机挂起。工作人员挂在不同的任务上,因此不是一个特定任务进入无限循环的情况。当我尝试关闭 celery 时,在日志中我通常会看到所有工作人员都退出,除了一个。在工作人员挂起之前和之后,我都尝试使用 celeryctl 来获取有关工作人员的信息,但 celeryctl 总是失败并显示消息“错误:在时间限制内没有节点回复。”。我也试过检查工人http://docs.celeryproject.org/en/latest/userguide/workers.html#inspecting-workers但所有的方法都没有返回。

关于如何诊断导致工人挂起或会有所帮助的任何想法。

0 投票
4 回答
14256 浏览

django - 从任务中恢复失败超过 max_retries

我正在尝试异步使用 Web 服务,因为它最多需要 45 秒才能返回。不幸的是,此 Web 服务也有些不可靠,并且可能会引发错误。我已经设置django-celery并执行了我的任务,它工作正常,直到任务失败超出max_retries.

这是我到目前为止所拥有的:

不幸的是,MaxRetriesExceededError没有被抛出retry(),所以我不确定如何处理这个任务的失败。Django 已经将 HTML 返回给客户端,我正在检查Result通过 AJAX 的内容,它永远不会进入完全失败f状态。

所以问题是:当 Celery 任务超出时,如何更新我的数据库max_retries

0 投票
2 回答
3626 浏览

python - 检测芹菜任务和所有子任务何时完成

我有一个父任务,它会产生任意数量的子任务,并且可能会产生大量子任务。一旦父任务和所有子任务都完成,我需要在我的数据库中设置一个标志以表明它已准备好。我最好怎么做呢?

例如:

我需要检测 master_task 及其产生的所有子任务何时完成,以便我可以在相关模型上设置一个标志以指示一切就绪

0 投票
1 回答
2925 浏览

django - 芹菜守护进程的问题

我们的 celery 守护进程非常不稳定。每当我们推送更改时,我们都会使用结构部署脚本来重新启动守护进程,但由于某种原因,这会导致大量问题。

每当运行部署脚本时,芹菜进程都会处于某种伪死状态。他们将(不幸地)仍然使用来自 rabbitmq 的任务,但他们实际上不会做任何事情。令人困惑的是,简短的检查表明在这种状态下一切似乎都“正常”,celeryctl status 显示一个节点在线和 ps aux | grep celery 显示 2 个正在运行的进程。

但是,尝试手动运行 /etc/init.d/celeryd stop 会导致以下错误:

虽然在这种状态下尝试运行 celeryd start 似乎工作正常,但实际上什么也没做。解决此问题的唯一方法是手动终止正在运行的 celery 进程,然后重新启动它们。

有什么想法吗?我们也没有完整的确认,但我们认为问题也会在几天后自行发展(目前没有任何活动,这是一个测试服务器),没有部署。

0 投票
3 回答
7990 浏览

python - 如何使用 django-celery 配置 TASK_SERIALIZER

我正在使用 django-celery,我想将其设置TASK_SERIALIZER为 JSON 而不是 pickle。

我可以通过将我的任务装饰器从

但我想在全球范围内这样做。环境

settings.py不起作用。试图运行

(如此处所暗示)导致

知道如何在通过 django 运行 celery 时配置此设置吗?

0 投票
1 回答
688 浏览

python - 如何在 django 中更改 celeryd 的权限

我已经看到,当我celeryd通过普通用户执行时,我得到权限被拒绝错误

/opt/python2.7/bin/celeryd

但它以root用户执行

在文中它说

我如何为 celeryd 分配特权给 user1

0 投票
1 回答
1346 浏览

python - 对 Linux 中 Django 的 celeryd 配置文件和守护程序文件感到困惑

我正在尝试celeryd与 djnago 集成,但我被它的配置文件卡住了

他们正在谈论三个文件。我需要知道这些文件的内容应该是什么

我的 Celeryd 可执行文件在/opt/python27/bin/celeryd

有三个文件我不知道它们的内容应该是什么

  1. celeryconfig.py
  2. /etc/default/celeryd
  3. /etc/init.d/celeryd

我正在关注这个 linl http://celeryq.org/docs/cookbook/daemonizing.html 我在 2 和 3 之间感到困惑,因为配置在 celeryconfig.py

但是/etc/init.d/celeryd他们有这个代码

0 投票
1 回答
3353 浏览

django - 来自 django-celery 的示例示例在 Django 应用程序中不起作用

我正在关注本教程

http://celeryq.org/docs/django-celery/getting-started/first-steps-with-django.html

我开始用芹菜

python manage.py celeryd

然后我tasks.pymyapp文件夹中制作

然后我把这些放在 settings.py

然后我用

python manage.py shell

然后我输入

从 myapp 导入任务

一切顺利

但是当我输入函数名称时,我得到了错误

我错过了什么

0 投票
3 回答
6676 浏览

django - 如何在 Django 的终端后台启动芹菜

我将芹菜作为

它正在工作,但在前台。然后为了测试命令,我需要启动另一个终端并在那里做一些事情。

有什么方法可以在后台启动它。我试过这个

但话又说回来了