草庐IT

celery_worker

全部标签

python - 如何在没有全局变量的 celery 任务中设置sqlalchemy session

总结:我想在celery任务中使用sqlalchemysession,而没有包含该session的全局变量。我在一个有celery任务的项目中使用SQLAlchemy,我有目前,我有一个全局变量“session”随我的celery应用程序设置(celery.py)一起定义,并有一个工作信号来设置它。session=scoped_session(sessionmaker())@celeryd_init.connectdefconfigure_workers(sender=None,conf=None,**kwargs):#loadtheapplicationconfiguration#d

python - Celery 动态队列创建和路由

我正在尝试调用一个任务并为该任务创建一个队列(如果它不存在),然后立即将调用的任务插入到该队列中。我有以下代码:@taskdefgreet(name):return"Hello%s!"%namedefrun():result=greet.delay(args=['marc'],queue='greet.1',routing_key='greet.1')printresult.ready()然后我有一个自定义路由器:classMyRouter(object):defroute_for_task(self,task,args=None,kwargs=None):iftask=='tasks

python - celery 的困难 : function object has no property 'delay'

我最近一直在忙于软件开发,并取得了一些成功,使celery屈服于我的意志。我已经成功地使用它发送电子邮件,并且刚刚尝试使用几乎完全相同的代码(在重新启动所有进程等之后)通过Twilio发送短信。但是我不断遇到以下问题:File"/Users/Rob/Dropbox/Python/secTrial/views.py",line115,insend_smssend_sms.delay(recipients,form.text.data)AttributeError:'function'objecthasnoattribute'delay'我的代码如下:@celery.taskdefsend

python - 从未知任务中检索 Celery 中 'task_id' 的结果

如果我之前不知道执行了哪个任务,如何提取任务的结果?这是设置:给定以下来源('tasks.py'):fromceleryimportCeleryapp=Celery('tasks',backend="db+mysql://u:p@localhost/db",broker='amqp://guest:guest@localhost:5672//')@app.taskdefadd(x,y):returnx+y@app.taskdefmul(x,y):returnx*y在本地运行RabbitMQ3.3.2:marcs-mbp:sbinmarcstreeter$./rabbitmq-serve

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 - 一旦其中一个 worker 满足特定条件,就终止 Python 多处理程序

我正在使用其多处理模块编写Python程序。该程序调用许多辅助函数,每个辅助函数产生一个随机数。一旦其中一名worker产生了大于0.7的数字,我就需要终止程序。下面是我的程序,其中“如何做”部分尚未填写。任何想法?谢谢。importtimeimportnumpyasnpimportmultiprocessingasmpimporttimeimportsysdeff(i):np.random.seed(int(time.time()+i))time.sleep(3)res=np.random.rand()print"Fromi=",i,"res=",resifres>0.7:print

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