我正在使用以下命令:celeryworker-linfo-Adjango_app--concurrency=10--autoreload但是DEBUG日志还是不断涌出,使用-lwarning和--logfile也是如此知道为什么Celery会忽略日志设置吗?更多详情:日志来自Python库suds,它使用DEBUG输出到记录器。 最佳答案 我遇到了同样的问题,我决定在settings.py中调整日志级别:LOGGING['loggers']['celery']={'handlers':['console',],'level':,'p
我在一家旅游公司工作,我们需要定期向我们的团队发送邮件。从现在开始,我一直在使用django管理命令并使用crontabs运行它们。我正在阅读有关celery可以做什么的信息,但我发现它真的很难理解我为什么要用celery?另外,因为这将是我的django项目和数据库的另一个补充,它会降低性能吗? 最佳答案 我认为您不应该使用celery,Cron在您看来仍然不错,但您可能想试试Celery。对我来说,Celery是一个用于[异步][分布式]任务队列的Python模块。它允许您将冗长的任务分派(dispatch)给在多台机器上运行的
我开始有很多celery任务,我想将它们分解成更小的文件,而不是将它们放在一个大的tasks.py中,但我没能得到celery发现它们。工作结构:proj/app/tasks.py我想工作的结构:proj/app/tasks/__init__.pytask1.pytask2.py...但是这里celery没有找到我的任务。我尝试设置CELERY_IMPORTS,但我必须指定每个文件,而且文件太多了。如果我将每个文件内容导入__init__.py也是如此。我希望自动发现所有任务,或者至少是任务目录中文件中的所有任务。我当然可以将每个任务目录中的所有文件列出到CELERY_IMPORTS中
我有一个web应用程序,我试图在其中使用celery从数据库加载后台任务。我目前正在根据要求加载数据库,但希望以每小时为间隔加载任务并让它们在后台工作。我正在使用flask并在python中编码。我也在运行redis。到目前为止,我已经使用celery让工作人员处理任务,并让节拍定期将任务发送给工作人员。但是我想从工作人员那里检索结果[一个数据框或查询],如果结果还没有准备好,那么它应该加载工作人员以前的结果。关于如何做到这一点有什么想法吗?编辑我正在使用sqlalchemy从数据库中检索结果,并在网页中呈现结果。我的主页上有各种链接,这些链接都指向不同的图表,我想在后台加载这些图表,
我们在去年使用celery,大约有15个worker,每个worker的并发数在1-4之间。最近我们将celery从v3.1升级到v4.1现在我们在每个工作日志中都有以下错误,知道是什么导致了这样的错误吗?2017-08-2118:33:19,78094794ERRORControlcommanderror:error(104,'Connectionresetbypeer')[file:pidbox.py,line:46]Traceback(mostrecentcalllast):File"/srv/dy/venv/lib/python2.7/site-packages/celery/
我有一个Django网络服务器和一个用户输入信息的表单。每次表单信息发生变化时,我都会更新数据库中的模型,并且在某些东西得到验证时,我会在celery中创建一个长时间运行的任务,以便在用户单击下一步之前获得我的结果。我正在使用DjangoCelery和RabbitMQ作为代理,我的问题是什么是最合适的方法,以防任务仍然没有完成,只锁定django中的响应线程,直到任务为state.SUCCESSFUL我尝试使用AsyncResult.get方法,但它只是长时间锁定线程然后给我结果。IE不是即时的,有没有人知道如何解决这个问题? 最佳答案
总结:我想在celery任务中使用sqlalchemysession,而没有包含该session的全局变量。我在一个有celery任务的项目中使用SQLAlchemy,我有目前,我有一个全局变量“session”随我的celery应用程序设置(celery.py)一起定义,并有一个工作信号来设置它。session=scoped_session(sessionmaker())@celeryd_init.connectdefconfigure_workers(sender=None,conf=None,**kwargs):#loadtheapplicationconfiguration#d
我正在尝试调用一个任务并为该任务创建一个队列(如果它不存在),然后立即将调用的任务插入到该队列中。我有以下代码:@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
我最近一直在忙于软件开发,并取得了一些成功,使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
如果我之前不知道执行了哪个任务,如何提取任务的结果?这是设置:给定以下来源('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