草庐IT

celery_worker

全部标签

python - Celery:如何忽略和弦或链中的任务结果?

我正在使用celery,我有几个任务需要按顺序执行。例如我有这个任务:@celery.taskdeftprint(word):printword我想做这样的事情:>>>chain(tprint.s('a')|tprint.s('b'))()然后我得到TypeError:tprint()只需要1个参数(给定2个)。和chord一样,在这种情况下,我需要在一组任务之后执行一个任务:>>>chord([tprint.s('a'),tprint.s('b')])(tprint.s('c'))那么如何处理这种情况呢?我不关心每个任务的结果,但它们需要按顺序执行。添加第二个参数不起作用:@cele

python - Django Celery - 无法连接到 amqp ://guest@127. 0.0.8000:5672//

我正在尝试设置Django-Celery。我正在学习教程http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html当我运行时$pythonmanage.pyceleryworker--loglevel=info我明白了[Tasks]/Users/msmith/Documents/dj/venv/lib/python2.7/site-packages/djcelery/loaders.py:133:UserWarning:Usingsettings.DEBUGleadstoamemoryleak,

python - 为什么当底层任务抛出异常时 Celery 不会抛出异常

Celery似乎没有正确处理异常。如果我有任务:deferrorTest():raiseException()然后我打电话r=errorTest.delay()In[8]:r.resultIn[9]:r.stateOut[9]:'PENDING'它会像这样无限期地挂起。去检查日志显示错误是在任务中抛出(如果你想要消息,问),我知道后端和一切都设置正确,因为其他任务正常工作并正确返回结果.为了在Celery中捕获异常,我需要做一些奇怪的事情吗?/Celery版本是3.0.13,broker是我本地机器上运行的RabbitMQ 最佳答案

python - 如何在 Celery 任务中使用 Flask-SQLAlchemy

我最近切换到Celery3.0。在此之前,我使用的是Flask-Celery为了将Celery与Flask集成。虽然它有很多问题,比如隐藏一些强大的Celery功能,但它允许我使用Flask应用程序的完整上下文,尤其是Flask-SQLAlchemy。在我的后台任务中,我正在处理数据和SQLAlchemyORM来存储数据。Flask-Celery的维护者已经放弃了对该插件的支持。该插件在任务中腌制Flask实例,因此我可以完全访问SQLAlchemy。我试图在我的tasks.py文件中复制此行为,但没有成功。您对如何实现这一点有任何提示吗? 最佳答案

python - 相当于 asyncio.Queues 与 worker "threads"

我试图弄清楚如何移植线程程序以使用asyncio.我有很多代码可以同步几个标准库Queues,基本上是这样的:importqueue,random,threading,timeq=queue.Queue()defproduce():whileTrue:time.sleep(0.5+random.random())#sleepfor.5-1.5secondsq.put(random.random())defconsume():whileTrue:value=q.get(block=True)print("Consumed",value)threading.Thread(target=pr

python - Celery 和 Django 简单示例

让我们举一个简单的Django示例。app/models.pyfromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportUserclassUserProfile(models.Model):user=models.OneToOneField(User)token=models.CharField(max_length=32)app/views.pyfromdjango.httpimportHttpResponsefromdjango.views.decorators.csrfimportcsrf_exemptfromfor

python - 为什么使用 Celery 运行计划任务比使用 crontab 更可取?

考虑到Celery已经是运行任务队列的堆栈的一部分(即,它不仅仅是为了运行crons而添加的,恕我直言,这似乎有点矫枉过正)。作为crontab的替代品,它的“周期性任务”功能如何带来好处?具体找以下几点。crontab的主要优点/缺点celery比crontab更好的用例Django特定用例:Celery与crontab运行基于django的周期性任务,当celery已作为django-celery包含在堆栈中以对django任务进行排队时。 最佳答案 我一直在将cron用于生产网站,并在当前项目中切换到celery。比起cron

python - 查看 celery 任务是否存在

是否有可能找出具有特定任务id的任务是否存在?当我尝试获取状态时,我总是处于待处理状态。>>>AsyncResult('...').status'PENDING'我想知道给定的任务id是否是真正的celery任务id而不是随机字符串。我想要不同的结果,具体取决于某个id是否存在有效任务。过去可能存在具有相同id的有效任务,但结果可能已从后端删除。 最佳答案 Celery在发送任务时不会写入状态,这部分是一种优化(参见documentation)。如果你真的需要,添加很简单:fromceleryimportcurrent_app#`a

python - 如何在 celery 中禁止泡菜序列化

Celery默认使用pickle作为任务的序列化方法。如FAQ中所述,这代表了一个安全漏洞。Celery允许您使用CELERY_TASK_SERIALIZER配置参数配置任务如何序列化。但这并不能解决安全问题。即使任务使用JSON或类似的方式进行序列化,worker仍将使用pickle序列化执行插入到队列中的任务——它们只是响应消息中的content-type参数。因此,任何可以写入任务队列的人都可以通过编写恶意腌制对象来有效地控制工作进程。如何防止工作线程运行用pickle序列化的任务? 最佳答案 我收到“ContentDisal

python - 检测 Celery 是否可用/正在运行

我正在使用Celery管理异步任务。然而,偶尔,celery进程会停止,这会导致没有任何任务被执行。我希望能够检查celery的状态并确保一切正常,如果我检测到任何问题,则会向用户显示错误消息。从CeleryWorker文档看来,我可以使用ping或inspect为此,但是ping感觉很笨拙,并且不清楚究竟是如何使用inspect的(如果inspect().registered()是空的?)。对此的任何指导将不胜感激。基本上我正在寻找的是这样的方法:defcelery_is_alive():fromcelery.task.controlimportinspectreturnbool(i