草庐IT

celery_tasks

全部标签

python - 用户 rabbitmq 和 celery 的访问被拒绝

我创建虚拟主机:rabbitmqctladd_vhosttest然后用户:rabbitmqctladd_useruser123456然后我获取该用户的权限:rabbitmqctlset_permissions-ptestuser"test""test""test"我在tasks.py中使用Celery:app=Celery('tasks',broker='amqp://user:123456@localhost/test',backend='amqp://user:123456@localhost/test')然后我运行:celery-Atasksworker--loglevel=in

python - Celery:使用多个参数链接任务

celery文档告诉我,如果多个任务链接在一起,第一个任务的结果将是下一个任务的第一个参数。我的问题是,当我有一个返回多个结果的任务时,我无法让它工作。例子:@task()defget_comments(url):#getthecommentsandthesubmissionandreturnthemas2objectsreturncomments,submission@taskdefrender_template(threadComments,submission):#rendertheobjectsintoahtmlfile#doesnotreturnanything现在,如果我在

python - celery 随机丢失任务

我发现celery中的任务似乎“消失”了,运行时有2个节点。这似乎是随机发生的。任务是这样创建的:task=perform_advance.apply_async(...)logger.info('Taskcreated,id:{}'.format(task.task_id))当这个工作时,我会看到类似的东西:[2016-04-2101:13:02,470:INFO/Worker-8]foo.tasks.some_task[e52615da-de7a-49de-88d6-b3ca43a3383f]:任务已创建,id:eaaeb427-a167-4a78-ba39-4803e20cc75

python - 如何使用 Celery、RabbitMQ 和 Django 确保每个用户的任务执行顺序?

我正在运行Django、Celery和RabbitMQ。我想要实现的是确保与一个用户相关的任务按顺序执行(具体来说,一次一个,我不希望每个用户的任务并发)每当为用户添加新任务时,它应该取决于最近添加的任务。其他功能可能包括不将任务添加到队列中,如果此类型的任务已为该用户排队但尚未开始。我做了一些研究并且:我找不到一种方法将新创建的任务与已在Celery中排队的任务链接起来,链似乎只能链接新任务。我认为这两种功能都可以使用自定义RabbitMQ消息处理程序来实现,尽管毕竟可能很难编写代码。我还阅读了有关celery-tasktree的内容,这可能是确保执行顺序的最简单方法,但是如何将新任

python - 将 celery 优先级队列与广播任务一起使用

我想在我的celeryworker中实现任务优先级。我可以通过为高优先级任务和低优先级任务创建不同的队列来做到这一点。但我还需要将广播任务发送给所有具有广播队列且无法正常工作的工作人员。这是tasks.py文件:fromceleryimportCeleryfromkombu.commonimportBroadcast,Queue,Exchangeapp=Celery('tasks')app.conf.update(CELERY_RESULT_BACKEND='amqp',CELERY_ACCEPT_CONTENT=['json'],CELERY_TASK_SERIALIZER='jso

python - 一些 Celery 任务有效,其他任务未注册

我关注theCeleryDjango教程和我在示例(add,mul)中看到的任务非常适合我。当我执行res=add.delay(1,2);时,我得到了正确的响应res.get()。但是当我尝试执行另一个任务时,我得到了***NotRegistered:u'pipeline.tasks.sayhello'res=sayhello.delay('trex')。如果我执行res=sayhello('trex'),那么只需键入res即可获得结果。但是通过这种方式,我在不使用Celery的情况下执行了函数。只有当我在Djangoshell./manageshell中运行它时,任务才有效>>>re

python - celery 不释放内存

看起来celery在任务完成后不会释放内存。每次任务完成时,都会有5m-10m的内存泄漏。因此,如果有数千个任务,很快就会用完所有内存。BROKER_URL='amqp://user@localhost:5672/vhost'#CELERY_RESULT_BACKEND='amqp://user@localhost:5672/vhost'CELERY_IMPORTS=('tasks.tasks',)CELERY_IGNORE_RESULT=TrueCELERY_DISABLE_RATE_LIMITS=True#CELERY_ACKS_LATE=TrueCELERY_TASK_RESUL

python - Celery - 最小化内存消耗

我们有约300个celeryd进程在Ubuntu10.464位下运行,在空闲状态下每个进程占用约19mbRES,约174mbVIRT,因此-所有进程约有6GB的空闲RAM。处于事件状态-进程最多占用100mb的RES和~300mb的VIRT每个进程都使用了minidom(xml文件问题是-我们如何减少RAM消耗-至少对于空闲的工作人员来说,可能一些celery或python选项可能会有所帮助?如何判断哪个部分占用内存最多?UPD:那是航类搜索代理,一个机构/日期的一名工作人员。我们有10个机构,一个用户搜索==9个日期,因此每个用户搜索有10*9个代理。是否可以按需启动celeryd进

Python 调用 - 找不到任何名为 'tasks' 的集合!

我做了入门PythonInvokefrominvokeimporttask@taskdefbuild():print("Building!")预期的输出是$invokebuildBuilding!但是,我的输出是$invokebuildCan'tfindanycollectionnamed'tasks'!我不知道为什么。令人惊奇的是,一旦我在virtualenv中调用,我就可以在没有virtualenv的情况下构建。>mkvirtualenvmyenv>invokebuildBuilding!>deactivatemyenv>invokebuildBuilding!我错过了什么吗?

python - 属性错误 : module 'asyncio' has no attribute 'create_task'

我正在尝试asyncio.create_task()但我正在处理这个错误:这是一个例子:importasyncioimporttimeasyncdefasync_say(delay,msg):awaitasyncio.sleep(delay)print(msg)asyncdefmain():task1=asyncio.create_task(async_say(4,'hello'))task2=asyncio.create_task(async_say(6,'world'))print(f"startedat{time.strftime('%X')}")awaittask1awaitt