问题标签 [djcelery]
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.
django - 如何正确配置 djcelery 结果后端到数据库
我正在尝试设置 djangocelery 以将任务结果存储在数据库中。
我设置:
然后我同步并迁移了数据库(没有错误)。
芹菜正在工作并且任务得到处理(我可以得到结果),但管理员显示没有任务。数据库中有两个表celery_taskmeta
和djcelery_taskmeta
. 第一个保存结果,第二个显示在管理员中。任何人都知道如何正确配置它?
django - 我应该如何在芹菜中实现任务集的回调
问题
我使用 celery 启动如下所示的任务集:
- 我执行了一批可以并行运行的任务,这批任务的数量从几十到几千不等。
我将这些任务的结果汇总到一个答案中,然后对这个答案做一些事情——比如存储到数据库、保存到特殊的结果文件等等。基本上在任务完成执行后,我必须调用具有以下签名的函数:
/li>
现在第 1 步在 Celery 队列中完成,第 2 步在 celery 外部完成:
这种方法很麻烦,因为我必须停止单个线程,直到所有任务都执行完毕(这可能需要几个小时)。
我也想以某种方式将第 2 步移到 celery --- 基本上我需要向整个任务集添加一个回调(据我所知,Celery 不支持它)或提交一个在所有这些子任务之后执行的任务。
有谁知道该怎么做?我在 django 环境中使用它,所以我可以在数据库中存储一些状态。
总结一下我最近的发现
和弦不行
我不能直接使用和弦,因为和弦使我能够创建这样的回调:
没有明显的方法可以将附加参数传递给回调(特别是因为这些回调不能是本地函数)。
使用数据库
我可以使用存储结果,TaskSetMeta
但该实体没有状态字段 --- 所以即使我向 TaskSetMeta 添加一个信号,我也必须汇集可能具有显着开销的任务结果。
python - 在芹菜中如何获得队列中的任务位置?
我使用 Celery 和 Redis 作为代理,我可以看到队列实际上是一个以序列化任务作为项目的 redis 列表。
我的问题是,如果我有一个 AsyncResult 对象作为调用的结果<task>.delay()
,有没有办法确定该项目在队列中的位置?
更新:
我终于能够使用以下方法获得该职位:
但它有点慢,因为它需要与所有工人沟通。
rabbitmq - 监控待处理的 Celery 任务
我正在使用带有 RabbitMQ 后端的 Celery。如何监控和获取待处理任务的数量?“celery events”和 djcelery 显示正在运行和已完成的任务。我应该监控 RabbitMQ 吗?如果有怎么办?
django - Django 导入任务
我有一个 tasks.py 文件,其中定义了 3 个方法。在我的views.py 文件中,我试图导入这些要从视图中调用的方法。
当我调用调用这些任务的视图时,django 返回
我的项目结构如下
我不确定为什么在导入这些方法时遇到问题。如果有人可以提供一些关于我做错了什么的见解,将不胜感激。
先谢谢了!
python - 芹菜与 djcelery
在尝试在我的 django 项目上设置 celery 时,我对这两个应用程序之间的差异感到困惑。
如果有的话,两者有什么区别?在线阅读教程时,我看到它们都在使用,我不确定哪个最适合我。似乎 djcelery 有点像 celery 但为 django 量身定制?但是 celery 不需要包含在安装的应用程序中,而 djcelery 则需要。
谢谢
python - djcelery、台球和 django_settings_module 的异常警告
当为异步进程运行 manage.py celeryd 时,一切都按预期工作,但每次启动时我都会收到一个奇怪的警告。它不会导致任何错误,但我无法让它消失或理解它的含义。
这里是:
这是不寻常的,因为 django 设置模块已添加到我的 wsgi 中,它适用于除此之外的所有内容。它是否要我将设置添加到 httpd.conf 之类的?
谢谢
django-celery - celery(d) 3.0.9 的第一步
在同一台机器上的两个 shell 中,我执行以下操作:
a) /home/user/prod/env/bin/python /home/user/prod/www/devcode/manage.py celery worker -E
和芹菜启动,显然没有问题
b) /home/user/prod/env/bin/activate && /home/user/prod/www/devcode/manage.py 芹菜状态
产生:
错误:在时间限制内没有节点回复。
显然我错过了一些基本的东西,但经过 2 天的尝试,我需要问:(
django - 芹菜 - 超过最大重试次数后重新提交失败的任务链
我在 Django 中使用芹菜。我必须为用户提供一个选项来检查失败的任务,必要时对失败的任务数据进行修改并再次提交。我见过这个线程 -Celery Storing unrecoverable task failures for later resubmission。所以我知道 celery 不存储任务的原始 args 和 kwargs,我们需要注意这一点。我可以这样做。但是,如果我有一个提交链“SubTask1 | SubTask2 | SubTask3”的主任务“MainTask1”,并且如果 SubTask2 失败,那么我看到在 SubTask2 成功之前不会执行 SubTask3。但是如果 SubTask2 在最大重试次数后失败,则 SubTask3 永远不会提交。
我的问题是——
当 SubTask2 失败时,我可以坚持 args 和 kwargs。但是如何获取链中剩余任务的信息呢?
celery_taskmeta 表的“result”和“meta”列中究竟存储了什么?
何时填充表 celery_tasksetmeta?
谢谢,
python - NotRegistered with djcelery + Heroku
I've been stuck on this one for the last 6 hours or so. So any help would be greatly appreciated.
I am using djcelery on a Django app which is deployed on Heroku. Said app has a periodic task that works just fine.
Today, I brought up another Heroku App which is a clone of the previous one so we'll have a production environment. The new Heroku deployment doesn't run the periodic task, instead, I get this in the logs:
This is where I am stuck, the two deployments have the exact same code, same Heroku addons and same configuration. In addition, djcelery's DB models are empty in both deployments.
What am I missing? Are there any other factors involved other than the ones above? I even gave the periodic task an explicit name to make sure that's not the issue.
Any help would be greatly appreciated!