django-celery相关内容

如何使用Celery和Django将任务路由到不同的队列

我正在使用以下堆栈: Python 3.6 Celery v4.2.1 (经纪人: RabbitMQ v3.6.0 ) Django v2.0.4 根据 Celery的文档,在不同的队列上运行计划的任务应该很容易,就像在 CELERY_ROUTES 上为任务定义相应的队列一样,尽管如此,所有任务似乎都在Celery的计算机上执行默认队列。 这是 my_app / settin ..
发布时间:2020-10-23 03:05:00 其他开发

Django Celery超过时间限制?

我一直收到此错误... [2012-06-14 11:54:50,072:错误/ MainProcess ] movie.tasks.encode_media [14cad954-26e2-4511-94ec-b17b9a4149bb]的硬时间限制(300s)超过了 [2012-06-14 11:54:50,111:ERROR / MainProcess]任务films.tasks. ..
发布时间:2020-10-23 02:55:41 其他开发

芹菜中@task装饰器后的装饰器

我正在尝试在celery @task装饰器之后应用装饰器,类似。 @send_email @task def any_function(): 打印“函数内部” 我可以按照文档中建议的方式使它工作,即将装饰器放在任务装饰器之前,但是在这种情况下,我想在我的装饰器中访问任务实例。 @send_email必须是一个类装饰器,这是我尝试没有成功的尝试: ..
发布时间:2020-10-19 20:52:42 Python

使用celeryd作为带有多个Django应用程序的守护进程?

我刚刚开始使用 django-celery ,我想将celeryd设置为守护程序。 说明似乎建议只能在以下位置为一个站点/项目配置它一个时间。芹菜可以处理多个项目,还是只能处理一个项目?而且,如果是这种情况,是否有一种干净的方法可以将celeryd设置为针对每个配置自动启动,这需要我为每个配置创建一个单独的初始化脚本? 解决方案 就像所有有趣的问题一样,答案是这取决于。 :) 绝对有 ..
发布时间:2020-09-30 02:49:51 其他开发

如何将Supervisor + Django + Celery与多个队列和工作程序一起使用?

我正在使用Celery + Django + Supervisord,并且尝试通过创建3个不同的队列来设置“优先级”(如 https://stackoverflow.com/a/15827160/54872 )。 有没有一种方法可以在主管的一个命令中为每个队列启动芹菜节拍和工人?或者,我是否需要为每个队列/工人池和一个芹菜拍子制作不同的主管conf文件? 解决方案 为每个队列创建程序 ..
发布时间:2020-09-30 02:48:41 其他开发

芹菜自动重新加载任何更改

当 settings.py 中的 CELERY_IMPORTS 中的模块发生更改时,我可以使芹菜自动重新加载。 / p> 我试图让母模块甚至在子模块上也可以检测到更改,但是它没有检测到子模块中的更改。这使我明白芹菜不会递归地进行检测。我在文档中进行了搜索,但是没有收到任何针对我问题的答复。 将项目中与芹菜相关的所有内容都添加到 CELERY_IMPORTS 来检测更改。 有没有一 ..
发布时间:2020-09-30 02:48:34 Python

Celery:具有并发和保留任务的工作者仅运行1个任务

代码中的某些任务执行时间越来越长。 在检查时,我注意到尽管我将我的工作程序节点设置为并发6,并且存在“执行工作”的6个过程,但“正在运行的任务”下仅显示1个任务。这是一些视觉上的证明: 以下是工作程序选项: 这是该任务的选项卡仅具有1个正在运行的进程的工作进程: 我发现,如果重新启动celery,并发性将再次得到尊重,并且我将看到> 1个正在运行的任务,但是经过一定时间/任 ..
发布时间:2020-09-30 02:48:26 其他开发

优雅地停止芹菜任务

我想优雅地退出celery任务(即不通过调用 revoke(celery_task_id,Terminate = True))。我以为会向设置标志的任务发送消息,以便任务功能可以返回。与任务进行通信的最佳方法是什么? 解决方案 为此使用信号。 Celery的 revoke 是正确的选择;它默认情况下使用SIGTERM,但是您可以指定其他 signal 参数。 只需在任务中为其设置信号 ..
发布时间:2020-09-30 02:41:52 Python

Python-从另一个队列重试失败的Celery任务

我正在将数据发布到Celery的网络服务中。有时,由于Internet断开,数据未发布到Web服务,并且任务无限次重试直到发布。重试该任务是不必要的,因为网已关闭,因此不需要再次重试。 我想到了一个更好的解决方案,即一个任务三次失败(重试至少3次),然后将其转移到另一个队列。此队列包含所有失败任务的列表。 现在,当Internet接通并且数据通过网络发布时,即任务已从正常队列中完成,然后从 ..
发布时间:2020-09-30 02:41:20 Python

通知工人芹菜任务关闭

我将celery 2.4.1与python 2.6,rabbitmq后端和Django一起使用。我希望我的任务能够在工人关闭的情况下正确清理。据我所知,您无法提供任务析构函数,因此我尝试连接到 worker_shutdown 信号。 注意: AbortableTask 仅适用于数据库后端,因此我无法使用它。 从celery.signals导入worker_shutdown @t ..
发布时间:2020-09-30 02:40:13 Python

Django:如何在同一对象中提到的时间自动更改字段的值?

我正在为一个赛车项目进行django项目,其中数据库中的一个表具有三个字段。 1)布尔值字段,用于了解比赛是否正在进行或不是 2)比赛开始时间 3)比赛结束时间 在创建对象时,指定了start_time和end_time。如何在比赛开始时将布尔字段的值更改为True,并在比赛结束时将 的值更改为False?如何安排这些活动? 解决方案 要在特定时间后自动更新模 ..
发布时间:2020-09-30 02:34:45 Python

重试芹菜链失败的任务

我有一条芹菜链可以执行一些任务。每个任务都可能失败并被重试。请参见下面的快速示例: 来自芹菜进口任务 @task(ignore_result = True) def add(x,y,fail = True): 尝试: 如果失败: 引发Exception('Ugly exception。') 打印'%d +%d =%d'%(x,y,x + y) 例外,例如e: 提高add.retry ..
发布时间:2020-09-30 02:32:04 其他开发

Django和Celery-更改后将代码重新加载到Celery中

如果我在celery运行时对task.py进行了更改,是否有一种机制可以重新加载更新的代码?还是我必须关闭Celery重新加载? 我读到celery有-autoreload 参数在旧版本中,但在当前版本中找不到: celery:错误:无法识别的参数:--autoreload 解决方案 不幸的是,-自动重新加载不起作用并且它已已弃用。 您可以使用Watchdog,它为wat ..
发布时间:2020-09-30 02:30:50 其他开发

芹菜停止执行链

我有一个定期执行的check_orders任务。它组成了一组任务,以便我可以确定执行任务所花的时间,并在完成所有任务后执行一些操作(这是res.join [1]和grouped_subs的目的)。链接的任务。 我想要的是当第一个任务不满足条件(失败)时不执行链中的第二个任务。我一生都无法解决这个问题,我觉得这对工作队列管理器来说是非常基本的功能。当我尝试[2]之后我注释掉的东西(引发异常,删 ..
发布时间:2020-09-30 02:29:47 Python

芹菜-链接组和子任务。 ->乱序执行

当我遇到以下类似情况 group1 = group(task1.si(),task1.si(), task1.si()) group2 =组(task2.si(),task2.si(),task2.si()) 工作流程=链条(group1,group2,task3。 si()) 直观的解释是task3仅在第2组中的所有任务完成后才执行。 实际上,任务3在g ..
发布时间:2020-09-30 02:27:11 Python

重试芹菜任务并以指数方式退回

对于这样的任务: 来自celery.decorators导入任务 @task( ) def add(x,y): 如果不是x或y: 引发Exception(“ test error”) 返回self.wait_until_server_responds( 如果它引发异常,并且我想从守护程序端重试,如何应用指数退避算法,即在 2 ^ 2、2 ^ 3,2 ^ 4 等秒之后? ..
发布时间:2020-09-30 02:24:55 Python