问题标签 [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 回答
7653 浏览

python - 尝试遵循 celery 教程时,RabbitMQ 给出“访问被拒绝,用户登录被拒绝”错误

我正在尝试按照celery 教程进行操作,但是在运行时遇到了问题python manage.py celeryd:我的 RabbitMQ 服务器(安装在我的开发盒上的虚拟机上)不允许我的用户登录。

我在 Django 管理控制台上得到以下信息:

这显示在rabbit.log我的 RabbitMQ 服务器上的文件中:

我仔细检查了我的用户、权限和虚拟主机信息,它们似乎都匹配。非常感谢任何帮助故障排除。

更新:根据@asksol 的建议,我得到以下回溯:

0 投票
5 回答
24536 浏览

python - 如何使用 celery 安排任务在特定时间执行?

我已经研究过PeriodicTask,但这些示例仅涵盖使其重复发生。我正在寻找更像cron是说“每周一凌晨 1 点执行此任务”的能力

0 投票
3 回答
1158 浏览

python - python imaplib ssl错误使用celeryd队列

我在使用最新 django svn 的 python 2.6 上使用 imaplib 时遇到问题。我想在队列中下载 imap 电子邮件(使用 celeryd)。我可以从命令行连接/下载电子邮件,但是当我通过 django 将任务卸载到 celeryd 时,我收到此错误:“SSLError: [Errno 1] _ssl.c:1325: error:1408F10B:SSL routines:SSL3_GET_RECORD :错误的版本号”。

Imaplib 文档没有提到如何指定 SSL 版本。我正在尝试从 gmail 中提取电子邮件。我不明白为什么使用 celeryd 将任务卸载到队列会导致任务失败。任何帮助将非常感激。

编辑:这是一个堆栈跟踪:

文件“/usr/lib/python2.6/imaplib.py”,第 643 行,在 select typ 中,dat = self._simple_command(name, mailbox)

文件“/usr/lib/python2.6/imaplib.py”,第 1059 行,在 _simple_command 中返回 self._command_complete(name, self._command(name, *args))

文件“/usr/lib/python2.6/imaplib.py”,第 889 行,在 _command_complete typ 中,data = self._get_tagged_response(tag)

_get_tagged_response self._get_response() 中的文件“/usr/lib/python2.6/imaplib.py”,第 990 行

_get_response resp = self._get_line() 中的文件“/usr/lib/python2.6/imaplib.py”,第 907 行

文件“/usr/lib/python2.6/imaplib.py”,第 1000 行,在 _get_line 行 = self.readline()

文件“/usr/lib/python2.6/imaplib.py”,第 1170 行,在 readline char = self.sslobj.read(1)

文件“/usr/lib/python2.6/ssl.py”,第 136 行,读取返回 self._sslobj.read(len)

SSLError:[Errno 1] _ssl.c:1325:错误:1408F10B:SSL 例程:SSL3_GET_RECORD:错误的版本号

编辑:这是我要运行的任务,其中 imap_parser 是一个包装 imaplib 并将电子邮件加载到我的数据库中的模块。

我注意到该任务实际上将使用 celery 运行,除非我使用 --detach 标志对任务进行守护。我不知道为什么任务只有在作为守护进程运行时才会失败。我尝试使用 -u 和 -g 标志设置相同的用户 ID 和组 ID,相同的 umask,并确保守护程序和非守护程序版本的路径和工作目录相同,但任务仍然不会运行当 celery 作为守护进程运行时在 celery 中。

我正在使用最新版本的 celery (0.9.4)。

0 投票
1 回答
11555 浏览

python - 如何在运行任务之前设置 Celery 以调用自定义初始化函数?

我有一个 Django 项目,我正在尝试使用 Celery 提交任务以进行后台处理(http://ask.github.com/celery/introduction.html)。Celery 与 Django 集成得很好,我已经能够提交我的自定义任务并返回结果。

唯一的问题是我找不到在守护进程中执行自定义初始化的合理方法。在开始处理任务之前,我需要调用一个会加载大量内存的昂贵函数,而且我不能每次都调用该函数。

以前有人遇到过这个问题吗?任何想法如何在不修改 Celery 源代码的情况下解决它?

谢谢

0 投票
2 回答
2572 浏览

python - 带有 Django 的 RabbitMQ / Celery 挂起延迟/就绪/等 - 没有有用的日志信息

所以我只是设置了 celery 和 rabbitmq,创建了我的用户,设置了虚拟主机,将用户映射到虚拟主机,并成功运行了 celery 守护进程(或者我假设)

我创建了一个“celery”用户,因为在这种情况下我感觉不是很有创造力。

当我尝试在 celery 文档中做一个简单的例子时:

所以我检查了常见问题解答,想知道还有什么问题,它告诉我这是由于用户权限引起的常见错误,所以我检查了三次,没有,创建另一个新用户,仍然没有。DjangoBrokerConnection如果我从中导入carrot.connection并获取信息,它会与我的 celery 设置中的内容相匹配。常见问题解答说明要检查您的日志文件。

我的rabbit.log文件在这种情况下不是很有帮助,只是显示:

等等。在这一点上,我不知道我还有什么问题。我正在运行 Ubuntu Jaunty 并从 apt-get 安装了 RabbitMQ。

提前感谢您的帮助。

0 投票
2 回答
37267 浏览

message-queue - Rabbitmq 或 Gearman - 选择作业队列

在工作中,我们需要构建一个工作服务器,用于发送电子邮件、构建 PDF、处理一些数据等。显然,我们希望构建某种通用排队系统。我对 Gearman 很熟悉,而这正是它试图解决的问题:将工作放在一个队列中,让工人来接他们。但是,我看到很多提到 Rabbitmq 并且不清楚它在这种情况下是如何使用的。

Rabbitmq 是一个很好的框架来构建分布式作业系统吗?

0 投票
1 回答
5120 浏览

django - 是否可以在启动时自动运行芹菜?

我有基于 django 和 celery 的 python 服务器。每次计算机重新启动时,apache2 都会启动,因此我的服务器正在工作,但我必须手动重新启动 celery(转到我的项目目录并执行“python manage.py celeryd”)。什么是生产的正确解决方案?我的意思是,是否有可能将芹菜作为守护进程启动?

在这里http://github.com/ask/celery/tree/master/contrib/debian/init.d/我发现了两个脚本,它们看起来应该在 /etc/init.d/ 中,就像启动 apache2 的 apache2 脚本一样。但我把它们放到 /etc/init.d/ 中,我发现没有任何变化。

0 投票
1 回答
1108 浏览

django - 异步消息队列和处理,如 django 中的 Amazon Simple Queue 服务

应用程序中有许多需要以下内容的活动:

  • 发送电子邮件,发布到 Twitter
  • 将图像缩略图,分成多种尺寸
  • 调用 cron 来查找连接的关系

完成这些任务的一个好方法是写入执行操作的异步队列。

什么 django 应用程序可用于在本地实现此类功能,如 Amazon Simple Queue 服务提供的一项?

我遇到过芹菜。正确的事?还有什么存在的,像这样的吗?

0 投票
3 回答
3941 浏览

python - Django中所有芹菜工人/内存缓存的全局可访问对象

我有非常标准的 Django+Rabbitmq+Celery 设置,有 1 个 Celery 任务和 5 个工人。

任务将相同的(我简化了一点)大文件(~100MB)异步上传到许多远程 PC。

一切都以使用大量内存为代价工作正常,因为每个任务/工作人员都将那个大文件分别加载到内存中。

我想做的是有某种缓存,所有任务都可以访问,即只加载一次文件。基于 locmem 的 Django 缓存将是完美的,但就像文档所说:“每个进程都有自己的私有缓存实例”,我需要所有工作人员都可以访问这个缓存。

尝试使用#2129820中描述的 Celery 信号,但这不是我需要的。

所以问题是:有没有一种方法可以在 Celery 中定义一些全局的东西(比如基于 dict 的类,我可以在其中加载文件或 smth)。或者在这种情况下我可以使用 Django 技巧吗?

谢谢。

0 投票
1 回答
6092 浏览

python - 删除 celery 中的 Task / PeriodicTask

如何删除 celery 中的常规任务或 PeriodicTask?