jjzjj

django - 使用 celery 异步执行 Django 应用程序的任务

在我维护的Django应用程序中,用户登录并相互交换消息,论坛风格。在任何给定的时间点,我通过检查在过去5分钟内登录了session对象的人来显示谁在线。为此,我使用了Django插件user_sessions,这允许像常规ORM一样操作session。我实现这个的代码是这样的:classWhoseOnlineView(ListView):model=Sessiontemplate_name="whose_online.html"defget_queryset(self):unique_user_sessions=Session.objects.filter(last_activity

python - 集成 Tornado 与 celery : RuntimeError: tornado-redis must be installed to use the redis backend

我在使用tornado-celery整合tornado和celery时,出现错误:```traceback(mostrecentcalllast):File"/usr/local/lib/python2.7/dist-packages/tornado/web.py",line1369,in_stack_context_handle_exceptionraise_exc_info((type,value,traceback))File"/usr/local/lib/python2.7/dist-packages/tornado/stack_context.py",line314,inwr

python - Celeryd 忽略/etc/default/celeryd 中的 BROKER_URL

总结我通过celeryd(asperinstructions)将Celery作为守护进程运行在配置文件/etc/default/celerydBROKER_URL="redis://localhost:6379/0"中指定redis作为broker工作日志文件表明BROKER_URL被忽略,因为它仍在尝试连接到默认代理。ERROR/MainProcess]consumer:Cannotconnecttoamqp://guest:**@localhost:5672//:Erroropeningsocket:asocketerroroccurred.问题:除了在线说明中提供的基本模板之外,

将 Celery 从 3.1 升级到 4.0 后 Redis 不返回结果

我最近将我的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=

python - 使用 Heroku 安装 Celery 和 Redis

我使用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

django - celery 重复我的任务三次

我在celery中调用了一些任务一次,但celery执行了所有这些任务3次。这是celery的预期行为还是配置错误?我正在使用Django1.5.11、Celery3.1.23和Redis3.0.6。 最佳答案 您可能有一些离群的工作人员正在执行任务,或者celeryflower实例可能会尝试“帮助”恢复未确认的消息。使用ps-Af|确保只有一个celery实例正在运行grepcelerybeat并通过访问http://localhost:5555检查是否有正在运行的花实例(它通常在该端口上运行)。

python - celery 最好的方式管理/获取任务的eta

我想每次通过get请求获取celery中的任务eta。celery中没有直接的api来获取任务预定时间(除了inspect()-但对我来说这似乎非常昂贵)我如何管理特定任务的预计到达时间?在Django模型中存储eta时间的缺点是不一致(要么我不能存储taks_id因为我不能-不知道如何从task_id获取eta)我在一个问题上看到没有api,因为它在某种程度上取决于经纪人等。但我希望有一些解决方案那么管理task_id以获得eta的最佳方式是什么?后端和broker是redis 最佳答案 我不认为有什么神奇的方法可以做到这一点。我

python - celery 如何将任务结果存储在redis中

我是Python和Celery-Redis的新手,所以如果我的理解不正确请指正。我一直在调试一个代码库,它的结构如下-TaskClass->Celery任务HandlerClass1,HandlerClass2->这些是扩展Object类的python类应用程序创建TaskClass说dumyTask实例和dumyTask创建celery子任务(我相信这些子任务是唯一的)说dumySubTask1,dumySubTask2通过获取处理程序的签名。我不明白的是什么?1)celery如何管理dumySubTask1、dumySubTask2和dumyTask的结果?我的意思是dumySub

python - Celery worker 进入无限启动和关闭循环

几年来,我一直在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--

django - celery 任务 .get() 不工作

我将非常感谢对此的帮助!这是我第一次尝试在Docker容器中将Celery与Django结合使用,经过数小时的阅读和试​​验,我无法解决这个问题。问题我可以从polls.task导入任务并使用.delay()运行它,如下所示:pythonmanage.pyshellfrompolls.tasksimportaddtask=add.delay(4,4)当我运行它时,我可以通过rabbitmq容器看到一条消息。如果我执行task.id,我可以获得任务id。但是,如果我运行task.get(),程序就会挂起。我没有看到对任何容器采取任何行动,也没有得到任何结果。我还注意到,当我运行dc-up