我正在尝试测试一个排队的redis作业,但似乎
任务如下按照文档说明:
我尝试添加了一个长延迟,这样日志就有机会看到任务处于“已启动”但未完成状态(以防在任务完成时清除元数据),但没有任何效果。您有什么想法我可能错过了什么吗?
meta
数据没有在任务和发起者之间传递。工作ID似乎匹配,所以我很困惑。也许一些新鲜的眼睛可以帮助我解决问题:任务如下按照文档说明:
from rq import get_current_job
def do_test(word):
job = get_current_job()
print job.get_id()
job.meta['word'] = word
job.save()
print "saved: ", job.meta['word']
return True
rqworker
日志会在任务被保存后打印出任务ID和单词。
14:32:32 *** Listening on default...
14:33:07 default: labeller.do_test('supercalafragelistic') (a6e2e579-df26-411a-b017-8788d621149f)
a6e2e579-df26-411a-b017-8788d621149f
saved: supercalafragelistic
14:33:07 Job OK, result = True
14:33:07 Result is kept for 500 seconds.
这个任务是从一个单元测试中调用的:
class RedisQueueTestCase(unittest.TestCase):
"""
Requires running "rqworker" on the localhost cmdline
"""
def setUp(self):
use_connection()
self.q = Queue()
def test_enqueue(self):
job = self.q.enqueue(do_test, "supercalafragelistic")
while True:
print job.get_id(), job.get_status(), job.meta.get('word')
if job.is_finished:
print "Result: ", job.result, job.meta.get('word')
break
time.sleep(0.25)
并生成此日志,显示相同的job_id和正确的结果,但meta
变量word
从未被填充。
Testing started at 2:33 PM ...
a6e2e579-df26-411a-b017-8788d621149f queued None
a6e2e579-df26-411a-b017-8788d621149f finished None
Result: True None
Process finished with exit code 0
我尝试添加了一个长延迟,这样日志就有机会看到任务处于“已启动”但未完成状态(以防在任务完成时清除元数据),但没有任何效果。您有什么想法我可能错过了什么吗?