问题标签 [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.
mongodb - 使用 Celery 时打开的 mongoDB 连接过多
我正在使用 Celery 下载提要和调整图像大小。然后使用 mongoengine 将提要和图像路径存储在 MongoDB 中。当我在运行任务后检查当前连接 (db.serverStatus()["connections"]) 时,我有 50-80 个“当前”连接,这些连接保持打开状态,直到我关闭 celeryd。有没有人遇到过这个问题和/或你知道我能做些什么来解决它?
谢谢,肯齐奇
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但所有的方法都没有返回。
关于如何诊断导致工人挂起或会有所帮助的任何想法。
django - 从任务中恢复失败超过 max_retries
我正在尝试异步使用 Web 服务,因为它最多需要 45 秒才能返回。不幸的是,此 Web 服务也有些不可靠,并且可能会引发错误。我已经设置django-celery
并执行了我的任务,它工作正常,直到任务失败超出max_retries
.
这是我到目前为止所拥有的:
不幸的是,MaxRetriesExceededError
没有被抛出retry()
,所以我不确定如何处理这个任务的失败。Django 已经将 HTML 返回给客户端,我正在检查Result
通过 AJAX 的内容,它永远不会进入完全失败f
状态。
所以问题是:当 Celery 任务超出时,如何更新我的数据库max_retries
?
python - 检测芹菜任务和所有子任务何时完成
我有一个父任务,它会产生任意数量的子任务,并且可能会产生大量子任务。一旦父任务和所有子任务都完成,我需要在我的数据库中设置一个标志以表明它已准备好。我最好怎么做呢?
例如:
我需要检测 master_task 及其产生的所有子任务何时完成,以便我可以在相关模型上设置一个标志以指示一切就绪
django - 芹菜守护进程的问题
我们的 celery 守护进程非常不稳定。每当我们推送更改时,我们都会使用结构部署脚本来重新启动守护进程,但由于某种原因,这会导致大量问题。
每当运行部署脚本时,芹菜进程都会处于某种伪死状态。他们将(不幸地)仍然使用来自 rabbitmq 的任务,但他们实际上不会做任何事情。令人困惑的是,简短的检查表明在这种状态下一切似乎都“正常”,celeryctl status 显示一个节点在线和 ps aux | grep celery 显示 2 个正在运行的进程。
但是,尝试手动运行 /etc/init.d/celeryd stop 会导致以下错误:
虽然在这种状态下尝试运行 celeryd start 似乎工作正常,但实际上什么也没做。解决此问题的唯一方法是手动终止正在运行的 celery 进程,然后重新启动它们。
有什么想法吗?我们也没有完整的确认,但我们认为问题也会在几天后自行发展(目前没有任何活动,这是一个测试服务器),没有部署。
python - 如何使用 django-celery 配置 TASK_SERIALIZER
我正在使用 django-celery,我想将其设置TASK_SERIALIZER
为 JSON 而不是 pickle。
我可以通过将我的任务装饰器从
到
但我想在全球范围内这样做。环境
在settings.py
不起作用。试图运行
(如此处所暗示的)导致
知道如何在通过 django 运行 celery 时配置此设置吗?
python - 如何在 django 中更改 celeryd 的权限
我已经看到,当我celeryd
通过普通用户执行时,我得到权限被拒绝错误
/opt/python2.7/bin/celeryd
但它以root用户执行
在文中它说
我如何为 celeryd 分配特权给 user1
python - 对 Linux 中 Django 的 celeryd 配置文件和守护程序文件感到困惑
我正在尝试celeryd
与 djnago 集成,但我被它的配置文件卡住了
他们正在谈论三个文件。我需要知道这些文件的内容应该是什么
我的 Celeryd 可执行文件在/opt/python27/bin/celeryd
有三个文件我不知道它们的内容应该是什么
celeryconfig.py
/etc/default/celeryd
/etc/init.d/celeryd
我正在关注这个 linl http://celeryq.org/docs/cookbook/daemonizing.html 我在 2 和 3 之间感到困惑,因为配置在 celeryconfig.py
但是/etc/init.d/celeryd
他们有这个代码
django - 来自 django-celery 的示例示例在 Django 应用程序中不起作用
我正在关注本教程
http://celeryq.org/docs/django-celery/getting-started/first-steps-with-django.html
我开始用芹菜
python manage.py celeryd
然后我tasks.py
在myapp
文件夹中制作
然后我把这些放在 settings.py
然后我用
python manage.py shell
然后我输入
从 myapp 导入任务
一切顺利
但是当我输入函数名称时,我得到了错误
我错过了什么
django - 如何在 Django 的终端后台启动芹菜
我将芹菜作为
它正在工作,但在前台。然后为了测试命令,我需要启动另一个终端并在那里做一些事情。
有什么方法可以在后台启动它。我试过这个
但话又说回来了