草庐IT

Celery 任务中每个查询的 Python cassandra-driver OperationTimeOut

我在celery任务中异步执行的每个插入查询(小查询)都有问题。在同步模式下,当我插入时一切都很好,但是当它在apply_async()中执行时,我得到这个:OperationTimedOut('errors=errors=errors={},last_host=***.***.*.***,last_host=None,last_host=None',)回溯:Traceback(mostrecentcalllast):File"/var/nfs_www/***/env_v0/local/lib/python2.7/site-packages/celery/app/trace.py",l

python - celery 任务不会在 Django 测试中抛出异常

我的Django测试中包含几个celery任务。不幸的是,通过.delay()调用任务时不会抛出异常。我正在设置CELERY_ALWAYS_EAGER为真。tasks.pyimportceleryappasapp@app.task()defexception_task():print'CELERY_ALWAYS_EAGER:',app.conf['CELERY_ALWAYS_EAGER']raiseException('foo')测试.pydeftest_exception_in_task(self):fromtasksimportexception_taskexception_tas

python - 区分celery、kombu、PyAMQP和RabbitMQ/ironMQ

我想将图像上传到S3服务器,但在上传之前我想生成3种不同大小的缩略图,我希望它在请求/响应周期之外完成,因此我使用的是celery。我已经阅读了文档,这是我的理解。如果我错了,请纠正我。Celery可帮助您在请求响应周期之外管理任务队列。还有一个叫做carrot/kombu的东西——它是一个django中间件,用于打包通过celery创建的任务。然后是第三层PyAMQP,它促进了胡萝卜与代理的通信。例如。RabbitMQ、AmazonSQS、ironMQ等经纪人位于不同的服务器上并为您做事。现在我的理解是-如果多个用户同时上传图片,celery会将调整大小排队,并且实际上会在ironM

python - celery 中@task装饰器之后的装饰器

我正在尝试在celery@task装饰器之后应用一个装饰器,例如。@send_email@taskdefany_function():print"insidethefunction"我可以按照文档中推荐的方式让它工作,即将装饰器放在任务装饰器之前,但在这种情况下,我想在我的装饰器中访问任务实例。@send_email必须是类装饰器,这是我尝试但没有成功的方法:classsend_email(object):'''wrapsaTaskceleryclass'''def__init__(self,obj):self.wrapped_obj=objfunctools.update_wrapp

python - 带有redis的 celery 中的任务优先级

我想用celery实现一个分布式作业执行系统。鉴于rabbitMQ不支持优先级,而我非常需要这个功能,我转向了celery+redis。在我的情况下,任务与硬件密切相关,例如,任务A只能在Worker1上运行,因为只有Worker1的PC有必要的硬件。我将每个worker的CONCURRENCY设置为1,这样一个worker每次只会运行一个任务。每个任务大约需要2分钟。为了实现优先级功能,首先我尝试在调用apply_async()时添加priority参数,例如apply_async(priority=0)和apply_async(priority=9)。在这个测试中,我只启动了一个C

python - 测量 Celery 任务执行时间

我已经将一个独立的批处理作业转换为使用celery来分派(dispatch)要完成的工作。我正在使用RabbitMQ。一切都在一台机器上运行,没有其他进程正在使用RabbitMQ实例。我的脚本只是创建了一堆由工作人员处理的任务。有没有一种简单的方法可以测量从我的脚本开始到所有任务完成的时间?我知道在使用消息队列时这在设计上有点复杂。但我不想在生产中这样做,只是为了测试和获得性能评估。 最佳答案 你可以使用celerysignals,注册的函数将在任务执行前后调用,测量耗时很简单:fromtimeimporttimefromceler

python - celery 与 djcelery

在我的django项目上尝试设置celery时,我对这两个应用程序之间的差异感到困惑。两者有什么区别?在网上阅读教程时,我看到它们都在使用,但我不确定哪个最适合我。看起来djcelery有点像celery,但为django量身定做?但是celery不需要包含在已安装的应用程序中,而djcelery需要。谢谢 最佳答案 Django-celery是一个为django提供Celery集成的项目,但不再需要它。您不必再安装django-celery。由于开箱即用地支持3.1版django。所以要安装celery你可以使用pip:pipin

python - celery worker 在调用 retry() 后不重试任务

我有一个任务:@celery.task(name='request_task',default_retry_delay=2,acks_late=True)defrequest_task(data):try:ifsome_condition:request_task.retry()exceptExceptionase:request_task.retry()我使用带有mongodb代理和mongodb结果后端的celery。当调用任务的retry()方法时,无论是从条件语句还是在捕获异常之后,任务都不会重试。在工作人员的终端中,我收到这样的消息:[2012-08-1019:21:54,9

python - Windows 的 Celery 任务超时/时间限制?

我有一个用Flask编写的Web应用程序,目前正在Windows上的IIS上运行(不要问...)。我正在使用Celery来处理一些异步处理(访问慢速数据库并生成报告)。但是,在尝试设置一些错误处理行为时,我在docs中遇到了这个问题:"TimelimitsdonotcurrentlyworkonWindowsandotherplatformsthatdonotsupporttheSIGUSR1signal."由于数据库可能会变得非常慢,我真的很希望能够为我的任务指定超时行为,并让它们稍后在数据库可能没有如此任务时重试。由于各种原因,该应用必须从Windows提供,是否有任何解决方法?非

python - 运行连接到 Django 测试数据库的 Celery worker

背景:我正在开展一个项目,该项目使用Celery来安排将在未来特定时间运行的任务。这些任务插入最终状态机的状态向前发展。这是一个例子:计划在2天内向用户发送future提醒。当该计划任务运行时,会发送一封电子邮件,并且FSM会前进到下一个状态下一个状态是安排提醒在另外两天运行当这个任务运行时,它会发送另一封邮件,高级状态等等...我目前正在按照thisSOanswer的建议使用CELERY_ALWAYS_EAGER在测试中使用该技术的问题在于,本应在单独线程中运行的任务代码与调度它的线程在同一线程中运行。这会导致FSM状态无法正确保存,并且难以测试。我无法确定究竟是什么导致了它,但似乎