草庐IT

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 - 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

python - 用 celery 运行 "unique"任务

我使用celery来更新我的新闻聚合网站中的RSS提要。我为每个提要使用了一个@task,一切似乎都很好。虽然有一个细节我不确定如何处理好:所有提要每分钟使用@periodic_task更新一次,但是如果启动新任务时提要仍在从上一个定期任务更新怎么办?(例如,如果提要真的很慢,或者离线并且任务处于重试循环中)目前我存储任务结果并检查它们的状态,如下所示:importsocketfromdatetimeimporttimedeltafromcelery.decoratorsimporttask,periodic_taskfromaggregator.modelsimportFeed_re

python - 如何让 django celery 写入测试数据库以进行功能测试?

我正在开发一个Django应用程序。我们正在使用celery对Mongo数据库的写入进行排队。我正在尝试为一个在celery中排队的函数编写一个功能测试(使用Selenium)。问题是celery写入主Mongo数据库而不是测试数据库。如何设置我的功能测试以使用写入测试数据库的celery实例?我们使用'django_nose.NoseTestSuiteRunner'作为我们的TEST_RUNNER。更新:我无法弄清楚如何使用另一个celery实例进行测试,但我找到了一种绕过celery进行功能测试的方法。在我的settings.py中:FUNC_TEST_COMMAND=['func