我希望能够中止从Celery队列(使用rabbitMQ)运行的任务。我调用任务使用task_id=AsyncBoot.apply_async(args=[name],name=name,connect_timeout=3)其中AsyncBoot是定义的任务。我可以获得任务ID(假设这是apply_async返回的长字符串)并将其存储在数据库中,但我不确定如何调用中止方法。我看到了如何使用Abortable任务类使方法可中止,但是如果我只有任务ID字符串,我该如何在任务上调用.abort()?谢谢。 最佳答案 apply_async返
简单介绍一下我要做什么->我正在构建一个定时竞赛应用程序,它会在设定的日期时间到期。所以基本上我想要一个脚本来查询我的模型并根据业务逻辑定期更改一些值在django中你会怎么做? 最佳答案 你用celery。http://celery.readthedocs.org/en/latest/userguide/periodic-tasks.html 关于python-如何在Django上运行类似cron的脚本?,我们在StackOverflow上找到一个类似的问题:
我一直在尝试关注CeleryFirstStepsWithCelery和NextSteps指南。我的设置是Windows764位、AnacondaPython2.7(32位)、安装的Erlang32位二进制文件、RabbitMQ服务器和celery(使用pipinstallcelery)。按照指南,我创建了一个包含init.py、tasks.py和celery.py的proj文件夹。我的init.py是空的。这是celery.py:from__future__importabsolute_importfromceleryimportCeleryapp=Celery('proj',br
我正在本地环境中测试celery。我的Python文件有以下两行代码:celery_app.send_task('tasks.test1',args=[self.id],kwargs={})celery_app.send_task('tasks.test2',args=[self.id],kwargs={})查看控制台输出,它们似乎按顺序一个接一个地执行。但是test2仅在test1完成后运行。至少这是它读取控制台输出的方式。这些任务彼此没有依赖关系,所以我不希望一个任务在移动到下一行之前等待另一个任务完成。如何同时执行这两个任务?----****--------*****--Darw
我有一个运行celeryworker的生产设置,用于向远程服务发出POST/GET请求并存储结果,它每15分钟处理大约20k个任务。问题是worker无缘无故地NumPy,没有错误,没有警告。我也尝试添加多处理,结果相同。在日志中我看到执行任务的时间在增加,就像在s中成功有关更多详细信息,请参阅https://github.com/celery/celery/issues/2621 最佳答案 如果您的celeryworker有时卡住,您可以使用strace&lsof找出它卡在哪个系统调用处。例如:$strace-p10268-s10
我正在使用django-celery,我想将TASK_SERIALIZER设置为JSON而不是pickle。我可以在每个方法的基础上通过改变我的任务装饰器来做到这一点@task到@task(serializer="json")但我想在全局范围内进行。设置TASK_SERIALIZER="json"在settings.py中不起作用。尝试运行importcelerycelery.conf.TASK_SERIALIZER="json"(隐含here)导致AttributeError:'module'objecthasnoattribute'conf'知道在通过django运行celery时
Celery的multiprocessing.JoinableQueue是什么?(或gevent.queue.JoinableQueue)?我正在寻找的功能是能够.join()来自发布者的Celery任务队列,等待队列中的所有任务完成。等待初始的AsyncResult或GroupResult是不够的,因为队列会由worker自己动态填满。 最佳答案 它可能并不完美,但这是我最终想到的。它基本上是一个基于共享Redis计数器和列表监听器的现有Celery队列之上的JoinableQueue包装器。它要求队列名称与其路由键相同(由于be
我想知道当我们需要在django项目中使用某种任务队列时需要考虑什么标准,我在考虑性能、开发速度、灵active等。我一直在使用Celery+RabbitMQ和Django-ztask+ZeroMQ模糊了一段时间(我敢肯定还有其他好的),但我没有准确的标准来选择每种情况下最合适的。您能否为它们中的每一个提供一些允许用户在它们之间进行选择的特性?它是否也可能包括一些其他稳定的MQ方法? 最佳答案 我不能提供太多,但我使用了两种不同的解决方案,Celery+Redis和Celery+RabbitMQ。我首先尝试了RabbitMQ,在安装
我的网络应用程序需要能够发送XMPP消息(Facebook聊天),我认为Celery可能是一个很好的解决方案。一项任务将包括查询数据库并将XMPP消息发送给多个用户。但是,使用这种方法,我每次运行任务时都必须连接到XMPP服务器,这不是一个好主意。来自FacebookChatAPIdocs:BestPracticesYourFacebookChatintegrationshouldonlybeusedforsessionsthatareexpectedtobelong-lived.Clientsshouldnotrapidlychurnonandoff.有没有一种方法可以在工作人员之间
importcelerydeftemptask(n):header=list(tempsubtask.si(i)foriinrange(n))callback=templink.si('printedatlast?')r=celery.chord(celery.group(header))(callback)returnr@task()deftempsubtask(i):printiforxinrange(i):time.sleep(2)current_task.update_state(state='PROGRESS',meta={'completed':x,'total':i})@