我正在尝试在我的Django应用程序中使用celery作为后台进程。Django版本为1.4.8,最新适用的celery版本为3.1.25。我使用Redis(3.1.0)作为代理和后端,json作为序列化器。当我启动worker时celery-Acelery_appworker-linfo我收到属性错误'unicode'objecthasnoattribute'iteritems'我的settings.py文件:BROKER_URL='redis://localhost'CELERY_RESULT_BACKEND='redis://localhost/'CELERY_ACCEPT_CO
我目前设置了一个系统,它使用带有redis的celery后端做一堆异步任务,比如发送电子邮件,拉取社交数据,爬取等。一切都很好,但我我有小组弄清楚如何监控系统(也就是数字排队消息)。我开始寻找celery的来源,但是我想我会在这里发布我的问题:首先,这是我的配置:BROKER_BACKEND="redis"BROKER_HOST="localhost"BROKER_PORT=6379BROKER_VHOST="1"REDIS_CONNECT_RETRY=TrueREDIS_HOST="localhost"REDIS_PORT=6379REDIS_DB="0"CELERY_SEND_EV
我正在开发一个Web应用程序,该应用程序将接收来自用户的请求,并且必须访问许多外部API才能为该请求编写答案。这可以直接从主Web线程使用gevent之类的东西来扇出请求来完成。或者,我在想,我可以将传入的请求放入一个队列中,然后使用worker来分配负载。这个想法是试图保持实时,同时将请求分配给几个工作人员。这些工作人员中的每一个都只会查询许多外部API中的一个。然后,他们收到的响应将经过一系列转换,保存到数据库中,转换为通用模式并保存到通用数据库中,最后组合成一个大响应,通过Web请求返回。Web请求很可能会一直阻塞,用户在等待,所以保持尽可能快地排队和出队很重要。外部API调用可
我有使用celery的Django应用程序。celery作为经纪人与兔子一起工作。当我在任务中使用redis时,celery返回WorkerLostError。启动celery的命令:pythonmanage.pyceleryd-BE--loglevel=INFO代码示例:classTestTask(Task):defrun(self):rds=redis.Redis(db=0)rds.set('test','11')val=rds.get('test')printval输出:python(1674)malloc:***errorforobject0x7fdaf125e908:inco
我有一个返回其他API列表的API。我需要每15分钟访问一次这些API,并将返回的数据放入数据库。下面是我使用celery和redis在celery_worker.py文件中写的。但是所有任务都没有开始。list_of_APIs=requests.get(the_api_that_returns_list_of_APIs).json()CELERYBEAT_SCHEDULE={'every-15-minute':{'task':'fetch_data_of_all_APIs','schedule':timedelta(minutes=15),},}@celery.taskdefacce
我正在使用Redis作为Django和Celery之间的代理。我有权访问的redis实例与许多其他应用程序共享,因此代理不可靠(它使用的rediskey被其他人删除,消息经常发送给其他应用程序中的工作人员)。换redis数据库也没有解决问题(数据库少,应用多)。如何将Celery配置为使用自定义字符串作为它使用的所有键的前缀?文档提到了向队列名称添加前缀的方法,但这不会影响redis键。据我所知,底层库(Kombu)似乎不允许用户为其使用的键添加前缀。 最佳答案 为所有Redis键添加前缀的功能已作为this的一部分添加.现在你可以
我对Celery有一个问题:从某一点开始(Celeryworker日志没有显示根本原因),所有任务(由celerybeat每5分钟安排一次)都被workers撤销和丢弃。celerybeat和celeryd(worker)的日志中没有任何线索可以说明为什么会发生这种情况。我注意到从某个时间点开始,每50个任务中有1个被撤销,被撤销任务的频率不断上升,直到24小时后所有任务都被系统地撤销。我正在使用Redis作为代理,问题发生在Celery的Linux部署上。您知道问题的可能原因是什么吗?如果您需要更多信息,请随时询问! 最佳答案 在
我刚刚熟悉Celery并有一个问题。我的设置是Django-Redis-Celery让我们以发送电子邮件的任务为例:任务@taskdefsend_email(message):mailserver.sendOneMessage(message)观点classnewaccount(APIView):defpost(self,request,format=None):send_email.delay(request.data.email)这非常有效,Django将消息发送到Redis,然后Celery接收这些消息以执行任务。但我想改进系统,让Celery以一定的时间间隔从Redis中获取所
尝试通过celery运行一些简单的任务。工作文件的标题看起来像fromceleryimportCelery,groupfromtimeimportsleepcelery=Celery('workerprocess',broker='redis://localhost:6379/0',backend='redis://localhost:6379/0')通过作业后,我正在尝试读取这样的结果。jobresult=group(signatureList).apply_async()whilenotjobresult.ready():sleep(30)#Line6代码在我的桌面上运行完美。配置
对于Web上的实时数据流,我计划使用Redis作为我的缓存数据层,其中数据是即时的。Celery是队列管理器,RabbitMQ是从Redis排队并到达Tornado层的代理。该层然后通过websockets流到前端。Redis+RabbitMQ的组合网上一直没找到。有人可以指导一个可靠的解决方案吗?问题是这样的整合是否可行且可取? 最佳答案 我现在非常成功地一起使用Tornado和RabbitMQ(没有Celery)。我还做了一些原型(prototype)设计,Redis也作为数据库插入到系统中。成功的最佳机会是找到可以插入Torn