如果这是一个愚蠢的问题,我道歉并且会羞愧地掩饰我的头,但是:
我正在使用 rq 在 Python 中对作业进行排队。我希望它像这样工作:
- 作业 A 开始。作业 A 通过 Web API 获取数据并存储。
- 作业 A 运行。
- 作业 A 完成。
- 完成 A 后,作业 B 开始。作业 B 检查作业 A 存储的每条记录并添加一些额外的响应数据。
- 完成作业 B 后,用户会收到一封愉快的电子邮件,说明他们的报告已准备就绪。
到目前为止我的代码:
redis_conn = Redis()
use_connection(redis_conn)
q = Queue('normal', connection=redis_conn) # this is terrible, I know - fixing later
w = Worker(q)
job = q.enqueue(getlinksmod.lsGet, theURL,total,domainid)
w.work()
我认为我最好的解决方案是让 2 名工人,一名负责工作 A,一名负责 B。工作 B 工人可以监控工作 A,当工作 A 完成后,开始工作 B。
我无法想办法挽救我的生命是如何让一名工人监控另一名工人的状态。我可以使用 job.id 从作业 A 中获取作业 ID。我可以用 w.name 获取工人姓名。但是对于我如何将任何这些信息传递给其他工作人员,这还不是最模糊的。
或者,有没有一种我完全想念的更简单的方法来做到这一点?