如何检查一项任务是否在celery中运行(特别是我在使用celery-django)?
我已经阅读了文档,并且已经在Google上进行了搜索,但是看不到类似以下的呼叫:
my_example_task.state() == RUNNING
我的用例是我有一个外部(java)服务来进行代码转换。当我发送要进行代码转换的文档时,我想检查运行该服务的任务是否正在运行,如果没有运行,请(重新)启动它。
我相信我使用的是当前的稳定版本2.4。
每个Task
对象都有一个.request
属性,其中包含AsyncRequest
对象。因此,以下行给出了Task的状态task
:
task.AsyncResult(task.request.id).state
问题内容: 我将Redis作为经纪人使用Celery(3.0.15)。 有没有一种简单的方法来查询Celery队列中存在的具有给定名称的任务数? 并且,作为后续措施,是否可以取消Celery队列中存在的所有具有给定名称的任务? 我已经看过《监控和管理指南》,在那儿看不到解决方案。 问题答案:
问题内容: 我有一个Django站点,当用户请求时会发生刮擦,并且我的代码在新过程中启动了Scrapy Spider独立脚本。自然,这与增加用户数量无关。 像这样: 我决定使用Celery并使用工作人员将爬网请求排队。 但是,我遇到了无法重新启动龙卷风反应堆的问题。第一个蜘蛛和第二个蜘蛛成功运行,但随后的蜘蛛将引发ReactorNotRestartable错误。 任何人都可以在Celery框架中运
问题内容: 我正在使用线程和队列模块在Python中编写一个简单的搜寻器。我获取一个页面,检查链接并将它们放入队列中,当某个线程完成页面处理后,它将从队列中获取下一个页面。我对已经访问过的页面使用数组,以过滤添加到队列的链接,但是如果有多个线程并且它们在不同页面上获得相同的链接,则会将重复的链接放入队列。那么,如何确定队列中是否已经有一些url以避免再次放置? 问题答案: 如果您不关心项目的处理顺
据我所知,RabbitMQ等消息代理促进了用不同语言/平台编写的不同应用程序之间的通信。因此,由于celery可以使用RabbitMQ作为消息代理,我相信我们可以将任务从任何应用程序排队到celery,即使生产者不是用Python编写的。 现在,我想知道如何通过RabbitMQ将用C编写的应用程序中的任务排队到芹菜。但我还没有找到这样的例子。 我发现的唯一与此相关的信息就是这个问题 其中,公认的答
问题内容: 我正在使用celery将任务发送到远程服务器,并试图将结果恢复。使用远程服务器上的update_state方法不断更新任务状态。 我正在使用发送任务 获得celery任务的结果是一个阻塞的呼叫,我不希望我的django应用程序等待结果和超时。 所以我尝试运行另一个celery任务以获取结果。 但这会导致以下错误。 有没有解决此错误的方法。是否需要运行守护进程来获取结果? 问题答案: 使
问题内容: 如何从任务中获取任务的task_id值?这是我的代码: 这个想法是,当我创建任务的新实例时,我从任务对象中检索。然后,我使用任务ID来确定任务是否已完成。我 不想 按值跟踪任务,因为在任务完成后文件将被“清理”,并且可能存在也可能不存在。 在上面的示例中,我将如何获取值? 问题答案: 如果任务接受,Celery会设置一些默认关键字参数。(您可以使用** kwargs接受它们,也可以专门