我希望Celery任务依赖于2个或更多其他任务的结果。我调查了Python+Celery:Chainingjobs?和http://pypi.python.org/pypi/celery-tasktree,但只有当任务只有一个依赖任务时,这些才是好的。我知道TaskSet,但似乎没有办法在TaskSetResult.ready()变为True时立即执行回调。我现在想到的是有一个周期性任务,每隔几[毫秒]秒左右轮询一次TaskSetResult.ready()并在回调返回True时触发回调,但这对我来说听起来很不雅观。有什么建议吗? 最佳答案
我在Heroku(免费层)上运行Flask应用程序,在使用apply_async安排任务时遇到了一些问题。如果我安排了两个以上的任务,我会得到一个很长的堆栈跟踪,但有一个异常(exception):AccessRefused(403,u"ACCESS_REFUSED-accesstoexchange'celeryresults'invhost'rthtwchf'refusedforuser'rthtwchf'",(40,10),'Exchange.declare')奇怪的是前两个任务(在重新启动我的所有进程之前)似乎总是毫无问题地完成。搜索引擎的一点点调查让我找到了https://st
我想在celery链命令中使用block。chain=task1.s(arg1)|task2.chunks(?,CHUNK_SIZE)|task3.chunks(?,CHUNK_SIZE)基本上我想做的是运行task1,将其结果分block并将分block发送到task2,然后task2应该调用task3,task3也应该从task2接收分block结果以完成该过程。为什么?因为task1和task2都可以返回相当数量的项目,我想分批处理这些项目。上面的代码不起作用,因为我不太确定用什么代替问号才能使其起作用。我不太确定这是否可行,因为搜索没有提供太多结果,所以如果无法构建这样的工作流
我的一些RemoteCelery任务似乎永远不会到达我的经纪人(RabbitMQ)。这似乎是随机发生的。我的日志中没有NO错误,它们永远不会到达工作人员或失败。Flower/Rabbit从不报告任务失败。我使用tcpflow-p-c-ieth0port5672来监控API上发送任务(client)的流量。当API成功发送任务时,外出流量记录如下:(已删除敏感数据)192.018.000.002.42738-052.048.150.171.05672:AMQP052.048.150.171.05672-192.018.000.002.42738:capabilitiesFpublishe
我正在将我的celeryworker从celeryv3更新到celeryv4,我的所有任务都是基于类的任务。Ihavemanuallyregisteredthetasks因为这是升级文档中的指示。问题出在任务路由中,我有以下任务:classRegisterTask(Task):routing_key='app_server.register'defrun(**params):whatever...我正在运行两个celeryworker,一个在默认队列中,另一个在注册队列中,如下所示:#DefaultWorkercelery-Aapp_serverworker--loglevel=inf
我正在尝试让Flask与以SQLite作为后端的Celery一起工作。但是,使用以下代码:CELERY_BROKER_URL='sqla+sqlite:///'+os.path.join(basedir,'celery.db')defmake_celery(app):celery=Celery(app.import_name,broker=app.config['CELERY_BROKER_URL'])celery.conf.update(app.config)TaskBase=celery.TaskclassContextTask(TaskBase):abstract=Truedef
假设我有这个任务:defdo_stuff_for_some_time(some_id):e=Model.objects.get(id=some_id)e.domanystuff()我是这样使用它的:do_stuff_for_some_time.apply_async(args=[some_id],queue='some_queue')我面临的问题是,有很多具有相同arg参数的重复性任务,这让队列陷入困境。只有当相同的参数和相同的任务不在队列中时才可以应用异步吗? 最佳答案 celery-singleton解决了这个需求警告:需要re
我很惊讶在搜索如何使用带有sorl-thumbnails和S3的celery任务时,除了“使用celery”我什么都没看到。问题:使用远程存储会在生成缩略图时造成大量延迟(对于包含许多缩略图的页面来说需要100秒以上),而缩略图引擎会从远程存储下载原始文件,处理它们,然后上传回s3。在sorl中设置celery任务的好地方在哪里,我应该叫什么?如果您有任何经验/想法,我们将不胜感激。我将开始挖掘Sorl的内部结构,以找到一个更有用的地方来延迟这项任务,但如果之前已经解决了这个问题,还有一些我很好奇的事情。立即返回什么图像?必须以某种方式告诉Sorl返回的图像不是真正的缩略图。当cele
我有一个连接到MySQL数据库的celery项目。其中一个表是这样定义的:classMyQueues(Base):__tablename__='accepted_queues'id=sa.Column(sa.Integer,primary_key=True)customer=sa.Column(sa.String(length=50),nullable=False)accepted=sa.Column(sa.Boolean,default=True,nullable=False)denied=sa.Column(sa.Boolean,default=True,nullable=Fals
我计划使用Celery来处理由我的主服务器事件触发的推送通知和电子邮件的发送。这些任务需要打开与外部服务器(GCM、APS、电子邮件服务器等)的连接。它们可以一次处理一个,也可以通过单个连接批量处理以获得更好的性能。通常会在短时间内分别触发这些任务的多个实例。例如,在一分钟内,可能有几十个推送通知需要发送给具有不同消息的不同用户。在Celery中处理这个问题的最佳方法是什么?似乎天真的方法是简单地为每条消息分配不同的任务,但这需要为每个实例打开一个连接。我希望有某种任务聚合器允许我处理,例如'所有未完成的推送通知任务'。有这样的东西吗?有没有更好的方法来解决这个问题,例如附加到事件任务