问题标签 [celery-task]

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 回答
4265 浏览

python - 1970 年具有 time_start 属性的 Celery 任务

检查当前正在运行的 Celery 任务会发现一个奇怪的time_start时间戳:

time_start属性将任务追溯到1970 年(那是在创建 Celery、Python 之前,而且我没有定制的 DeLorean):

我是否误解了time_task属性?我的 Celery 应用程序配置错误吗?

我在 Linux 上使用带有 Django 应用程序和 Redis 后端的 Celery 3.1.4。

任务由执行如下的工作人员运行:

0 投票
1 回答
2435 浏览

python - 在线程中的任意位置获取当前 celery 任务 id

我想在正在运行的任务中获取任务 ID,但不知道我在执行哪个任务。(这就是我不能使用https://stackoverflow.com/a/8096086/245024的原因)

我希望它是这样的:

这种模式在许多不同的任务中返回,我不想将任务上下文带到每个内部方法调用中。

一种选择是使用线程本地存储,但是我需要在任务开始之前对其进行初始化,并在完成后对其进行清理。

有没有更简单的?

0 投票
1 回答
883 浏览

celery - 如何在内存中加载对象并在 Celery worker 的不同执行中共享?

我在 3 个集群机器上设置了 celery + rabbitmq。我还创建了一个任务,它根据文件中的数据生成正则表达式并使用该信息来解析文本。但是,我希望读取文件的过程只在每个工作人员生成时完成一次,而不是在每次执行 as 任务时完成。

在上面的代码中,我想打开文件并将每个工作人员的输出读入字符串一次,然后任务 analyse_json 应该只使用字符串。

任何帮助将不胜感激,

谢谢,阿米特

0 投票
2 回答
2014 浏览

java - 如何从Java等非python语言调用芹菜任务延迟函数?

我在 3 个集群机器上设置了 celery + rabbitmq。我还创建了一个任务,它根据文件中的数据生成正则表达式并使用该信息来解析文本。

我可以使用以下 python 代码非常轻松地调用此任务:-

但是,现在我想从 Java 而不是 python 进行相同的调用。我不确定做同样事情的最简单方法是什么。

我编写了这段代码来向 AMQP 代理发送消息。代码运行良好,但任务没有执行。我不确定如何指定应该执行的任务的名称。

} }

这是 rabbitMq 错误日志中的输出:-

任何帮助将不胜感激。

谢谢,阿米特

0 投票
1 回答
591 浏览

python - 为`ClassTask` mixin 子类化 Celery Task

以我是 Celery 新手的事实作为我的问题的前言,并且 (1) 可能已在其他地方得到回答(如果是这样,我找不到答案)或 (2) 可能有更好的方法来实现我的目标比我直接问的。

另外,我知道celery.contrib.methods,但task_method并没有完全完成我正在寻找的东西。

我的目标

我想创建一个类 mixin,将整个类变成 Celery 任务。例如,由下面的代码表示的 mixin(现在不运行):

与使用时不同task_method,我不想.delay()在任务排队并被调用之前完全实例化类。相反,我想简单地将类名连同任何相关的初始化参数传递给异步进程。然后异步进程将使用类名和给定的初始化参数完全实例化类,然后.run_now()在实例化对象上调用一些方法(例如)。

示例用例

异步构建和发送电子邮件将是我需要的 mixin 的一个示例。

上面的代码将通过调用在异步 Celery 进程中发送电子邮件WelcomeEmail.enqueue(recipient_address, template_name, template_context)。在进程中同步发送电子邮件将通过调用来完成WelcomeEmail(recipient_address, template_name, template_context).send()

问题

  1. 在 Celery 框架中,我正在尝试做的事情是否非常非常错误?
  2. 有没有更好的方法来构建 mixin 以使其比我提出的更 Celery-onic(更好的属性名称、不同的方法结构等)?
  3. 正如我所描述的那样,在用例中使 mixin 起作用时,我缺少什么?
0 投票
0 回答
996 浏览

python - 芹菜中高效的重复任务?

我每天有大约 250,000 个重复任务;其中大约五分之一可能会以每天不同的预定日期时间进行更新。

这可以在 Celery 中有效地完成吗?- 我担心芹菜的beat.py

0 投票
1 回答
1296 浏览

flask - 将 Web 请求上下文透明地传递给 celery 任务

我有一个多租户设置,我想将某些客户特定信息,特别是request.host传递给 celery 任务,理想情况下它应该在全局变量中可用。有没有办法以对应用程序透明的方式进行设置?

任务将以相同的方式调用:

该任务的定义方式相同,除了它可以访问一个名为“request”的全局变量,该变量具有“主机”属性:

0 投票
1 回答
1879 浏览

django - Django 1.6 + RabbitMQ 3.2.3 + Celery 3.1.9 - 为什么我的 celery 工人死于:WorkerLostError:工人过早退出:信号 11(SIGSEGV)

这似乎解决了一个非常相似的问题,但并没有给我足够的洞察力:https ://github.com/celery/billiard/issues/101 听起来尝试非 SQLite 数据库可能是个好主意。 ..

我的 django 应用程序有一个简单的 celery 设置。在我的settings.py文件中,我将任务设置为运行如下:

我已按照此处的说明进行操作:http: //celery.readthedocs.org/en/latest/django/first-steps-with-django.html

我可以打开两个新的终端窗口并运行 celery 进程,如下所示:

ONE - 计划任务所需的 celery beat 进程,并将任务放入队列:

二 - 芹菜工人,应该从队列中取出任务并运行它:

然而,当任务被发送时,似乎有 50% 的时间工作人员运行任务,而另外 50% 的时间我收到以下错误:

我正在运行 Mavericks 的 Macbook Pro 上进行开发。

芹菜版本 3.1.9 RabbitMQ 3.2.3 Django 1.6

请注意,我使用的是 django-celery 3.1.9 并启用了 djcelery 应用程序。

0 投票
0 回答
791 浏览

python - 芹菜任务完成django通知

我从 celery 开始,用于 django 中的一个模块,它将导入大型 csvs。用户将提供文件和其他一些字段,并且将检查 csv 然后将其发送到 celery。现在我应该为通知做什么?我希望用户能够离开页面,但在任务完成时收到某种通知。我打算将所有行放在一个组中,并使用和弦来回调一些 django 视图或 url,以向用户发送关于任务完成的弹出通知。通过这种方式,我试图避免轮询。

这会奏效吗?这是正确的方式吗?

0 投票
1 回答
1255 浏览

python - 芹菜花 - 我如何加载以前捕获的任务?

我开始使用芹菜花进行任务监控,它就像一个魅力。不过,我有一个问题,如何在花重启后“重新加载”有关受监控任务的信息?我使用 redis 作为代理,即使在服务(或服务器)意外重启的情况下,我也需要选择检查任务。

提前致谢