我们可以在RQ调度器中检索最初在scheduler.Schedule()中传递的参数(如Args)吗?

问题描述 投票:0回答:2

我想要什么:

我正在尝试检索在 rq 调度程序中传递给我的作业的参数,同时调度如下: 传递的参数、函数名称和其他内容

我已经尝试过:

list_of_jobs=scheduler.get_jobs()
# print("jobs lsit",list_of_jobs)

for job in list_of_jobs:
    print(job.args)

显示错误

Traceback (most recent call last):
 
 
    raise AppRegistryNotReady("Models aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  ile "/home/munz/.local/lib/python3.7/site-packages/rq/job.py", line 266, in _deserialize_data
    raise DeserializationError() from e
rq.exceptions.DeserializationError
python-3.x scheduler rq
2个回答
0
投票

答案是否定的,这是不可能的

任何与作业相关的参数只能使用作业 ID 来检索,因此我建议保留所有作业的作业 ID,否则您将对其原始参数一无所知(当您设置它时)


0
投票

我不确定接受的答案是否正确。您可以重新对作业进行排队,这样参数就必须以某种方式保留在某个地方。

我抓住了一个 Job 对象,并注意到它有一个名为

data
的属性。这是一个腌制的字节数组,所以
pickle.loads(job.data)
给了我一本像这样的字典:

('ph.mod.tasks.foo', None, (), {})

© www.soinside.com 2019 - 2024. All rights reserved.