我最近将我的Celery安装升级到了4.0。经过几天的升级过程,我终于让它工作了……有点。有些任务会返回,但最终任务不会。我有一个类SFF,它接受并解析一个文件:#ConstructorwithI/Ofiledef__init__(self,file):#Filedatathat'sgonnagetusedalotsffDescriptor=file.fileno()fileName=abspath(file.name)#GetthepointertothefilefilePtr=mmap.mmap(sffDescriptor,0,flags=mmap.MAP_SHARED,prot=
我使用Django1.9、Python2.7和Heroku。Celery3和Redis运行良好,直到我切换到Celery4.0.2并更改了配置。heroku日志显示以下消息:2017-03-05T16:34:22.076383+00:00app[worker.1]:Unknowncommand:'celery'这是我的配置:__init.py__from__future__importabsolute_import,unicode_literalsfrom.celeryimportappascelery_app__all__=['celery_app']settings.pyINSTA
我在celery中调用了一些任务一次,但celery执行了所有这些任务3次。这是celery的预期行为还是配置错误?我正在使用Django1.5.11、Celery3.1.23和Redis3.0.6。 最佳答案 您可能有一些离群的工作人员正在执行任务,或者celeryflower实例可能会尝试“帮助”恢复未确认的消息。使用ps-Af|确保只有一个celery实例正在运行grepcelerybeat并通过访问http://localhost:5555检查是否有正在运行的花实例(它通常在该端口上运行)。
我想每次通过get请求获取celery中的任务eta。celery中没有直接的api来获取任务预定时间(除了inspect()-但对我来说这似乎非常昂贵)我如何管理特定任务的预计到达时间?在Django模型中存储eta时间的缺点是不一致(要么我不能存储taks_id因为我不能-不知道如何从task_id获取eta)我在一个问题上看到没有api,因为它在某种程度上取决于经纪人等。但我希望有一些解决方案那么管理task_id以获得eta的最佳方式是什么?后端和broker是redis 最佳答案 我不认为有什么神奇的方法可以做到这一点。我
我是Python和Celery-Redis的新手,所以如果我的理解不正确请指正。我一直在调试一个代码库,它的结构如下-TaskClass->Celery任务HandlerClass1,HandlerClass2->这些是扩展Object类的python类应用程序创建TaskClass说dumyTask实例和dumyTask创建celery子任务(我相信这些子任务是唯一的)说dumySubTask1,dumySubTask2通过获取处理程序的签名。我不明白的是什么?1)celery如何管理dumySubTask1、dumySubTask2和dumyTask的结果?我的意思是dumySub
几年来,我一直在Django项目中使用celery(python中的异步任务队列)作为结果后端和代理-今天我尝试将后端/代理切换到AWS的ElastiCacheRedis,但是celeryworker进入无限的启动和关闭循环,如下面的日志文件所示。我还从运行celery的同一台机器成功连接到Redis实例,并成功完成了一些基本的SET和GET操作。我当前的设置是:操作系统:Ubuntu14.04python2.7.6celery3.1.17昆布3.0.37台球3.3.0.23命令:celeryworker--concurrency=3--queues=general--events--
我将非常感谢对此的帮助!这是我第一次尝试在Docker容器中将Celery与Django结合使用,经过数小时的阅读和试验,我无法解决这个问题。问题我可以从polls.task导入任务并使用.delay()运行它,如下所示:pythonmanage.pyshellfrompolls.tasksimportaddtask=add.delay(4,4)当我运行它时,我可以通过rabbitmq容器看到一条消息。如果我执行task.id,我可以获得任务id。但是,如果我运行task.get(),程序就会挂起。我没有看到对任何容器采取任何行动,也没有得到任何结果。我还注意到,当我运行dc-up
我有Redis作为我的缓存服务器。当我在一个任务上调用delay()时,甚至需要超过10个任务才能开始执行。知道如何减少这种不必要的滞后吗?我应该用RabbitMQ替换Redis吗? 最佳答案 如果不能检查您的应用程序和服务器日志,很难说延迟的原因是什么,但我可以向您保证,延迟是不正常的,不是Celery或使用Redis作为经纪人。我过去经常使用这种组合,任务的执行发生在几毫秒内。我首先要确保创建任务的客户端、代理(Redis)和任务使用者(celeryworker)之间没有网络相关问题。祝你好运!
我在用celery==4.1.0(latentcall)[cqlsh5.0.1|Cassandra3.11.2|CQLspec3.4.4|Nativeprotocolv4]Python2.7.14我正在尝试在Celery辅助函数中执行Cassandra查询。但Celeryworker收到任务但没有执行Query。tasks.pyfromcassandra.clusterimportClusterfromceleryimportCeleryapp=Celery('',backend="rpc://",broker='redis://localhost:6379/0')dbSession=
我有一个Erlang系统。我希望这个系统能够在另一个基于Python的系统上触发Celery任务。它们共享同一台主机,Celery使用Redis作为其代理。是否可以将Celery的任务直接插入Redis(在我的例子中,来自Erlang),而不是使用CeleryAPI? 最佳答案 是的,您可以将任务直接插入到redis或您使用celery的任何后端。您必须匹配celery序列化格式(默认情况下为JSON)并确定它要插入到哪些键。使用的key结构没有明确记录,但是thispart源代码是一个很好的起点。你也可以使用redismonito