Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在命令行上检查芹菜作业列表_Python_Django_Celery - Fatal编程技术网

Python 在命令行上检查芹菜作业列表

Python 在命令行上检查芹菜作业列表,python,django,celery,Python,Django,Celery,在Django的芹菜设置中,我注册了两个任务,email\u slow\u track和email\u fast\u track。我想在命令行上检查每个任务的作业列表,但找不到正确的命令 下面是我尝试过的(我的应用程序名是api): inspect registered:这将列出已注册的任务,而不是在这些任务下提交的作业但是,它至少表明连接设置正确,并且任务是已知的 检查查询任务:空结果。我不确定这个命令应该做什么,以及这是否是预期的结果 检查查询任务:空结果。我只是想试试 请注意,

在Django的芹菜设置中,我注册了两个任务,
email\u slow\u track
email\u fast\u track
。我想在命令行上检查每个任务的作业列表,但找不到正确的命令

下面是我尝试过的(我的应用程序名是
api
):

  • inspect registered
    :这将列出已注册的任务,而不是在这些任务下提交的作业但是,它至少表明连接设置正确,并且任务是已知的
  • 检查查询任务
    :空结果。我不确定这个命令应该做什么,以及这是否是预期的结果
  • 检查查询任务
    :空结果。我只是想试试
请注意,我的任务确实正常运行。我不是在试图修复任务执行;这里的问题是获取任务列表

我可以看到所有的工作与芹菜花,所以事情总的来说是好的。但是我可以从命令行获得这些信息吗


我尝试的其他事情:

  • inspect active
    :这应该显示当前正在运行的任务。我的任务运行得非常快,所以大多数时候什么都没有运行。每当我运行这个命令时,结果都是空的
  • inspect reserved
    :这通常会给出一个空结果,或者有时会给出一个由工作人员获取的任务(在我的例子中只有一个)。但是如何获得所有队列作业的列表

芹菜不提供命令来获取特定队列中的任务(有充分的理由)。你的问题不清楚你真正想要实现什么,所以我不得不猜测

你说你可以在花上看到“工作清单”。Flower所能做的一切都可以通过inspect获得,因为,猜猜看,Flower使用inspect API(以及芹菜事件,芹菜事件是该服务的核心-这就是它通知所有任务事件的方式)

芹菜-api检查活动将为您提供当前正在运行的任务列表。同样有用的还有
芹菜-一种api检查保留的
,用于找出哪个工人获取了哪个任务(很快将在该工人身上执行)。您也可以使用整个检查API,以便编写更复杂的服务

获取信息在我看来,队列中的信息是无用的,因为当你得到列表时,会从列表中取出一些信息,因为任务将运行并完成。这也取决于经纪人。因此,在Redis的情况下,每个队列在Redis数据库中都有一个LIST对象,您可以查询该队列中有多少任务在等待,或者让这些项目检查该队列中的任务


假设您想检查默认(
celery
是默认名称,除非您在芹菜配置中更改了它)队列中的任务数。您可以通过
LLEN芹菜
来实现这一点。要获取该队列中的第一个任务,请执行
LINDEX芹菜0
。然而,正如我上面提到的,在您执行LLEN之后,可能已经执行了1000个任务并从列表中删除了!这可能就是这个功能不可用的原因,人们会做各种各样的破解,比如用
LINDEX芹菜-1
等向后读取队列。

这个命令的结果通常是空的(任务是短期运行的)或者只返回一个已获取的任务(我有一个工作者),即使很多任务在队列中。我编辑了我的原始问题以包含此信息。最初的问题仍然存在:我如何获得提交的所有作业的列表?是的,输出取决于芹菜集群中当前正在进行的操作。在我的用例中,我知道由于我想要施加的速率限制,我的任务很少运行,任务列表实际上会包含对我非常有用的信息。如果这是一个普通的芹菜用例,这并不重要;关键是,这就是我的问题所在。Flower可以提供这些信息,因此它是可以访问的。我想知道是否可以从命令行完成。我的问题的答案可能是“不,从命令行不可能”。尽管如此,问题仍然悬而未决。是的。答案中有“检查激活”和“检查保留”的信息,这两个信息提供了其他信息,并且有Redis特定的信息,如LLEN和LINDEX。不过,我不使用Redis,而且代理后端对我的问题也无关紧要。我问了一个非常具体的问题,但没有一个是答案。没有关于要运行哪个芹菜CLI命令以获取作业列表的信息。我错过什么了吗?
$ celery -A api inspect registered
-> celery@a5dac4396c0b: OK
    * api.celery.debug_task
    * email_fast_track [rate_limit=1/s]
    * email_slow_track [rate_limit=10/m]
$ celery -A api inspect query_task email_slow_track
-> celery@a5dac4396c0b: OK
    {}
$ celery -A api inspect query_task cb1ecc1c-5746-4d08-ad50-4bff4d57855b
-> celery@a5dac4396c0b: OK
    {}
$ celery -A api inspect active
-> celery@a5dac4396c0b: OK
    - empty -