问题标签 [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.

0 投票
3 回答
11627 浏览

django - 如何正确配置 djcelery 结果后端到数据库

我正在尝试设置 djangocelery 以将任务结果存储在数据库中。

我设置:

然后我同步并迁移了数据库(没有错误)。

芹菜正在工作并且任务得到处理(我可以得到结果),但管理员显示没有任务。数据库中有两个表celery_taskmetadjcelery_taskmeta. 第一个保存结果,第二个显示在管理员中。任何人都知道如何正确配置它?

0 投票
1 回答
3117 浏览

django - 我应该如何在芹菜中实现任务集的回调

问题

我使用 celery 启动如下所示的任务集:

  1. 我执行了一批可以并行运行的任务,这批任务的数量从几十到几千不等。
  2. 我将这些任务的结果汇总到一个答案中,然后对这个答案做一些事情——比如存储到数据库、保存到特殊的结果文件等等。基本上在任务完成执行后,我必须调用具有以下签名的函数:

    /li>

现在第 1 步在 Celery 队列中完成,第 2 步在 celery 外部完成:

这种方法很麻烦,因为我必须停止单个线程,直到所有任务都执行完毕(这可能需要几个小时)。

我也想以某种方式将第 2 步移到 celery --- 基本上我需要向整个任务集添加一个回调(据我所知,Celery 不支持它)或提交一个在所有这些子任务之后执行的任务。

有谁知道该怎么做?我在 django 环境中使用它,所以我可以在数据库中存储一些状态。

总结一下我最近的发现

和弦不行

我不能直接使用和弦,因为和弦使我能够创建这样的回调:

没有明显的方法可以将附加参数传递给回调(特别是因为这些回调不能是本地函数)。

使用数据库

我可以使用存储结果,TaskSetMeta但该实体没有状态字段 --- 所以即使我向 TaskSetMeta 添加一个信号,我也必须汇集可能具有显着开销的任务结果。

0 投票
1 回答
3155 浏览

python - 在芹菜中如何获得队列中的任务位置?

我使用 Celery 和 Redis 作为代理,我可以看到队列实际上是一个以序列化任务作为项目的 redis 列表。

我的问题是,如果我有一个 AsyncResult 对象作为调用的结果<task>.delay(),有没有办法确定该项目在队列中的位置?

更新:

我终于能够使用以下方法获得该职位:

但它有点慢,因为它需要与所有工人沟通。

0 投票
1 回答
1926 浏览

rabbitmq - 监控待处理的 Celery 任务

我正在使用带有 RabbitMQ 后端的 Celery。如何监控和获取待处理任务的数量?“celery events”和 djcelery 显示正在运行和已完成的任务。我应该监控 RabbitMQ 吗?如果有怎么办?

0 投票
1 回答
514 浏览

django - Django 导入任务

我有一个 tasks.py 文件,其中定义了 3 个方法。在我的views.py 文件中,我试图导入这些要从视图中调用的方法。

当我调用调用这些任务的视图时,django 返回

我的项目结构如下

我不确定为什么在导入这些方法时遇到问题。如果有人可以提供一些关于我做错了什么的见解,将不胜感激。

先谢谢了!

0 投票
3 回答
5724 浏览

python - 芹菜与 djcelery

在尝试在我的 django 项目上设置 celery 时,我对这两个应用程序之间的差异感到困惑。

如果有的话,两者有什么区别?在线阅读教程时,我看到它们都在使用,我不确定哪个最适合我。似乎 djcelery 有点像 celery 但为 django 量身定制?但是 celery 不需要包含在安装的应用程序中,而 djcelery 则需要。

谢谢

0 投票
2 回答
447 浏览

python - djcelery、台球和 django_settings_module 的异常警告

当为异步进程运行 manage.py celeryd 时,一切都按预期工作,但每次启动时我都会收到一个奇怪的警告。它不会导致任何错误,但我无法让它消失或理解它的含义。

这里是:

这是不寻常的,因为 django 设置模块已添加到我的 wsgi 中,它适用于除此之外的所有内容。它是否要我将设置添加到 httpd.conf 之类的?

谢谢

0 投票
0 回答
71 浏览

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 天的尝试,我需要问:(

0 投票
1 回答
1730 浏览

django - 芹菜 - 超过最大重试次数后重新提交失败的任务链

我在 Django 中使用芹菜。我必须为用户提供一个选项来检查失败的任务,必要时对失败的任务数据进行修改并再次提交。我见过这个线程 -Celery Storing unrecoverable task failures for later resubmission。所以我知道 celery 不存储任务的原始 args 和 kwargs,我们需要注意这一点。我可以这样做。但是,如果我有一个提交链“SubTask1 | SubTask2 | SubTask3”的主任务“MainTask1”,并且如果 SubTask2 失败,那么我看到在 SubTask2 成功之前不会执行 SubTask3。但是如果 SubTask2 在最大重试次数后失败,则 SubTask3 永远不会提交。

我的问题是——

  1. 当 SubTask2 失败时,我可以坚持 args 和 kwargs。但是如何获取链中剩余任务的信息呢?

  2. celery_taskmeta 表的“result”和“meta”列中究竟存储了什么?

  3. 何时填充表 celery_tasksetmeta?

谢谢,

0 投票
0 回答
135 浏览

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!