草庐IT

celery_state

全部标签

redis - 如果 celery (显然)随机忘记任务,我该怎么办?

我有一个带有sqlalchemy的flask应用程序和一个正在运行的celeryworker。我使用redis作为我的经纪人。每次有人在对话中提交新消息时,都会启动一个worker并向所有参与对话的人发送通知邮件。因此它连接到数据库并获取所有相关的电子邮件地址。不幸的是,似乎有一个随机因素决定,celery是否知道发送邮件的任务。在一些启动后它完美地工作(有时),在一些启动后它根本不工作。当它不起作用时,我得到的错误是:[2012-11-2821:42:58,751:ERROR/MainProcess]Receivedunregisteredtaskoftype'messages.se

Django celery 先进先出

所以我将这2个应用程序与RESTAPI(json消息)连接起来。一个用Django编写,另一个用Php编写。我在两边都有一个精确的数据库副本(使用mysql)。当我在其中一个上按下“提交”时,我希望将该数据保存在当前应用程序数据库中,并使用celery/redis启动cron作业以使用rest为另一个应用程序更新远程数据库。我的问题是,我如何将同一个工作人员分配给我的任务以保持FIFO顺序?我需要我的数据保持一致,FIFO非常重要。好的,我将进一步详细说明我想做的事情:所以我有这个Django应用程序,当我在填写表格后按下提交时,我的celeryworker醒来并负责获取提交的数据并发

redis - Celery 未连接到 Redis 代理 : Connection to broker lost

我正在尝试让Redis充当我在Django上安装的Celery3.0.19的代理。我看到redis-server正在端口6379上运行。当我运行一个简单的Celery测试时,我得到以下堆栈跟踪:UbuntuLucid10.0.4Celery3.0.19celery-Atasksworker--loglevel=info[2013-05-0218:56:27,835:INFO/MainProcess]consumer:Connectedtoredis://127.0.0.1:6379/0.[2013-05-0218:56:27,835:ERROR/MainProcess]consumer

python - 使用Supervisor启动Huey(Redis Celery)消费者

我目前有一个“cons.sh”文件,用于启动我的Huey(CeleryRedis的基本版本)消费者。内容如下:#!/bin/bashecho"smsbothandler"echo"-------------"echo"Waitingfortasks'"echo"StopthehandlerusingCtrl+C"PYTHONPATH=.:$PYTHONPATHhuey_consumer.pymain.huey--threads=3现在我想使用Supervisor来保持它的运行,但看起来,我不能让supervisor启动shell脚本,我必须让它启动python脚本。谁能告诉我如何使用p

python - 如何从另一个程序向 celery 添加任务?

我们在类似守护进程的程序中使用celery和redis作为代理。我们如何将来自另一个程序的任务添加到这个守护进程?有可能吗?编辑:如果描述不够清楚,有两个单独的程序,代码不同,我正在寻找除了从后一个程序导入任务之外的解决方案。 最佳答案 I'mlookingforasolutionotherthanimportingtasksfromthelatterprogram.你运气不好。celery文档提到worker和客户需要拥有相同的软件。因此,您的客户端代码需要导入一个celery任务,并负责在应用程序控制流中调用它。引用资料:Cel

python - flask celery redis 没有返回值

正在尝试学习如何实现celery。我有一个工作示例,我做了一个redis-cli监视器,我看到它获取了值并将其返回给浏览器,但是当我将示例更改为我自己的东西时,我看到它给了我一个key,但是当我尝试查看key的结果,期望它打印“testing123”,它挂起并且redis-cli监视器显示celery任务的无尽“get”。工作...celery=make_celery(app)@celery.task(name="tasks.add")defadd(x,y):returnx+y@app.route("/test")defhello_world(x=16,y=16):x=int(requ

redis - celery :如何在撤销后刷新计划任务列表?

我使用以下代码撤销了所有任务。fromcelery.task.controlimportinspectfromcelery.task.controlimportrevokei=inspect()queues=i.scheduled()keys=queues.keys()all_tasks=[]tasks=[]iflen(keys)>0:printkeys[0]all_tasks=queues[keys[0]]fortaskinall_tasks:revoke(task['request']['id'],terminate=True)但是inspect().scheduled()在我撤销

python - 使用 Celery 和 Redis 链接或连接非常大的工作组/任务

我正在开展一个项目,将一些繁重的模拟作业并行化。每次运行大约需要两分钟,占用100%的可用CPU能力,并生成超过100MB的数据。为了执行下一步的模拟,需要将这些结果组合成一个巨大的结果。请注意,这将在高性能系统上运行(目前在具有16GB内存和12核的机器上进行测试,但可能会升级到更大的硬件)我可以使用celery作业组轻松分派(dispatch)大约10个这样的作业,然后将其链接到串联步骤和下一个模拟中。(本质上是celery和弦)但是,我需要能够在这台机器上运行至少20个,最终在更强大的机器上运行40个。似乎Redis不允许结果后端有足够大的对象让我做任何超过13个的事情。我找不到

django - 如何在任务功能运行之前设置 celery 结果后端键?

我在我的Django项目中使用了多个数据库(redis、postgresql)。在celery中,我正在运行一个任务函数,将倒计时参数设置为一周,将结果放入redis结果后端。然后我试图将rediskey保存在postresql表中。如果我在任务函数运行之前设置了redis键,我可以稍后访问redis记录。那么,有没有办法做到这一点?(对不起我的英语) 最佳答案 你能试试这个吗result=add.apply_async(countdown=time_in_seconds)result.id#giveyoutaskid.您现在可以将

python - Django Celery 任务队列

我有一个用django制作的应用程序,使用redis和celery来完成一些异步任务。我正在使用celery任务来执行一些存储过程。此SP需要5分钟到30分钟才能完全执行(取决于记录的数量)。一切都很好。但我需要能够多次执行任务。但是现在当我运行任务并且另一个用户也运行任务时,这两个任务是同时执行的。我需要任务进入队列并且只在第一个任务完成时执行。我的设置.py:BROKER_URL='redis://localhost:6379/0'CELERY_IMPORTS=("pc.tasks",)CELERY_ACCEPT_CONTENT=['json']CELERY_TASK_SERIAL