django-celery相关内容

如何使用Celery,RabbitMQ和Django确保每个用户的任务执行顺序?

我正在运行Django,Celery和RabbitMQ。我要实现的目标是确保与一个用户相关的任务按顺序执行(特别是一次,我不希望每个用户执行任务并发) 为用户添加新任务时,应依赖于最近添加的任务。其他功能可能包括:如果此用户的此类任务已排队并且尚未启动,则不将任务添加到队列中。 I我做了一些研究,然后: 我找不到将新创建的任务与芹菜本身已经排队的任务链接的方法似乎只能链接新任务。 ..
发布时间:2020-10-23 19:19:48 Python

芹菜result.get超时

我有两个不同的Django项目,分别是 projA 和 projB ,每个项目都有自己的celery守护程序在不同的队列上运行但同一个虚拟主机,projA的任务为 taskA ,projB的任务为 taskB ,我尝试运行 taskB 从 taskA 内部,例如 @task(routing_key ='taskA') def taskA(event_id): #做一些工作,然后调用tas ..
发布时间:2020-10-23 19:18:46 Python

Celery / RabbitMQ-找出无问题-未确认的消息

我正在尝试弄清楚如何获取未确认消息的信息。这些存放在哪里?在玩芹菜检查时,似乎一则消息被确认后就会处理,您可以跟踪状态。假设您有一个结果后端,那么您可以看到它的结果。但是从您应用延迟开始,直到它被确认是一个黑洞。 noAcks存储在哪里? 如何确定noAcks列表的“深度”?换句话说,我的任务在列表中有多少?在哪里? 虽然与问题不完全相关,但我 从celery.app导入app ..
发布时间:2020-10-23 19:18:41 其他开发

Celery存储不可恢复的任务故障以供以后重新提交

我正在使用djkombu运输工具进行本地开发,但是我可能会在生产中使用amqp(兔子)。 我希望能够遍历特定类型的故障并重新提交。这可能是由于服务器出现故障或由于某些新的数据变化而触发的边缘案例错误。 所以我可以重新提交最多12个小时的作业 我的问题是:是否有一种方法可以通过结果后端访问旧的失败作业,然后简单地重新提交 解决方案 来自IRC dp ..
发布时间:2020-10-23 19:18:38 其他开发

每个任务名称的Celery时间统计

我有一些相当繁忙的芹菜队列,但不确定哪些任务有问题。有没有一种方法可以汇总结果以找出哪些任务需要花费很长时间?我在2-4台服务器上有10到20名工作人员。 使用redis作为代理,也将后端用作结果。我注意到Flower上的队列很忙,但无法弄清楚如何获取每个任务的时间统计信息。 解决方案 方法1: 如果您在启动celery worker时启用了日志记录,则他们将记录每个任务花费的 ..
发布时间:2020-10-23 19:17:34 其他开发

您在哪里设置芹菜任务的task_id?

我无法找到使用我自己的task_id设置task_id的任何示例 类似这些东西... def testview1(request):i在xrange(0,1000)中的 : 结果= add.delay(i,4,task_id = i) 打印result.info #value = result.wait() return HttpResponse(“ Done”) @ ..
发布时间:2020-10-23 19:17:24 Python

RabbitMQ中的celeryev队列变得非常大

我在Rabbitmq上使用芹菜。我已经将数千条消息发送到队列,并且它们正在成功处理,并且一切正常。但是,几个rabbitmq队列中的消息数量正在增长(队列中成千上万的项目)。队列被命名为 celeryev。[...] (请参见下面的屏幕截图)。这是适当的行为吗?这些队列的目的是什么,不应该定期清除它们吗?有没有一种方法可以更定期地清除它们,我认为它们占用了大量磁盘空间。 解决方案 您可以使 ..
发布时间:2020-10-23 19:16:15 其他开发

数据库后端清理芹菜任务

我试图了解如何以及何时清理芹菜任务。通过查看任务文档,我看到了: 旧结果将根据 CELERY_TASK_RESULT_EXPIRES设置自动清除。默认情况下,此值设置为1天后过期 :如果群集非常繁忙,则应降低 的值。 但是此引用来自RabbitMQ结果后端部分,并且在数据库后端部分中没有看到任何类似的文本。所以我的问题是:是否有可以使用芹菜清理旧任务的后端不可知方法,如果没有,我 ..
发布时间:2020-10-23 19:16:11 其他开发

Python Celery与线程库用于运行异步请求

我正在运行一个解析大量数据的python方法。由于它非常耗时,因此我想在一个单独的线程上异步运行它,以便用户仍然可以访问网站/ UI。 使用“ from线程”执行线程如果用户退出站点或他们继续在服务器上运行,“导入线程”模块将终止? 使用Celery与仅使用线程模块相比有什么好处? 解决方案 Python解释器由于(a)著名的全局解释器锁 aka(GIL)。因此,Python中 ..
发布时间:2020-10-23 19:16:07 Python

首次更改主机名后,rabbitmq-server无法启动

我在django项目中使用django-celery。昨天,我更改了计算机的主机名(我正在使用Ubuntu 12.04,已编辑文件'/ etc / hostname'),并且在下次重启后django-celery失败,并显示错误 消费者:连接错误:[Errno 111]连接被拒绝。在4秒钟内重试... 在对这个错误进行了一些研究之后,我发现,改变了我的主机名从此处导致了此错 ..
发布时间:2020-10-23 19:16:06 其他开发

使用类方法作为芹菜任务

我正在尝试将class方法用作django-celery任务,并使用@task装饰器对其进行标记。 Anand Jeyahar询问此处。 是这样的 A类: @task def foo(self, bar): ... def main(): a = A() ... #我需要什么 a.foo.delay(bar)#作为芹菜任务执行 a.foo(bar)#在本地执行 ..
发布时间:2020-10-23 19:15:03 Python

芹菜节拍-每个任务的时区不同

我正在用芹菜拍子安排一些任务。我可以使用CELERY_TIMEZONE设置通过crontab时间表来安排任务,它在提到的时区中的预定时间运行。 但是我想成为能够在同一应用程序中针对不同时区设置多个此类任务(单个django settings.py)。我知道计划任务时哪个任务需要在哪个时区运行。 是否可以为每个任务指定不同的时区? 我正在使用Django(1.4)和芹菜(3.0.1 ..
发布时间:2020-10-23 06:03:44 Python

AsyncResult(task_id)返回“ PENDING”在任务开始后也要声明

在项目中,我尝试轮询长时间运行的任务的task.state并更新其运行状态。它可以在开发中使用,但是当我在生产服务器上移动项目时将无法使用。即使看到任务开始于花,我也一直保持“ PENDING”状态。但是,我仍然可以在任务完成时(task.state =='SUCCESS')更新结果。我在生产中使用了python 2.6,Django 1.6和Celery 3.1,结果是后端AMQP。 @ ..
发布时间:2020-10-23 05:18:29 Python

Django Celery安排manage.py命令

我需要使用以下命令按计划更新solr索引: (env)$ ./manage.py update_index 我浏览了Celery文档并找到了有关排程的信息,但还无法进行查找在日程表上和virtualenv中运行django管理命令的方法。在常规的cron上运行会更好吗?如果是这样,我将如何在virtualenv中运行它?有人有经验吗? 谢谢您的帮助! 解决方 ..
发布时间:2020-10-23 04:29:05 其他开发

在同一台服务器上运行多个Django Celery网站

我正在使用apache2虚拟服务器在同一服务器上运行多个Django / apache / wsgi网站。我想使用celery,但是如果我为多个网站启动celeryd,则所有网站都将使用我启动的最后一个celeryd实例的配置(日志,数据库等)。 是否可以使用多个Celeryd(每个网站一个)或所有所有Celeryd?似乎应该可行,但是我找不到方法。 解决方案 这个问题让人头疼,我没 ..
发布时间:2020-10-23 03:13:42 其他开发

在执行任务期间是否可以使用django-celery-results查询celery任务的状态?

我正在使用Celery + RabbitMQ在我的Django应用程序中排队任务, 我想使用task_id和task_state跟踪任务的状态。为此,我创建了一个TaskModel(Model)来将task_id,task_state和一些其他数据存储在数据库中。在任务执行时,将保存一个新的TaskModel对象,并随着任务的进行更新。一切正常。 但是,我仍然需要添加很多功能和特性以及 ..
发布时间:2020-10-23 03:13:40 Python

阻止Celery Beat运行同一任务

我每30秒安排一次芹菜运行任务。我有一个每天作为任务运行,另一个每周在用户指定的时间和星期几运行。它检查“开始时间”和“下一个预定日期”。下一个计划的日期直到任务完成后才会更新。 但是,我想知道如何确保芹菜节拍只运行一次任务。我现在看到,芹菜将多次运行某个任务,直到该任务的下一个计划日期已更新。 解决方案 在为了做到这一点,您需要实现某种“分布式锁定”,而解决此问题的一种简单可靠的方 ..
发布时间:2020-10-23 03:12:20 Python