12

ジョブの結果をそれに依存するジョブに渡すにはどうすればよいですか?

私が現在行っているのは、最初のジョブの ID を 2 番目のジョブに渡すことです。

first = queue.enqueue(firstJob)
second = queue.enqueue(secondJob, first.id, depends_on=first);

secondJobそして、最初のジョブを取得して結果を取得する内部

first = queue.fetch_job(previous_job_id)
print first.result

これは推奨される方法ですか?最初のジョブの結果を2番目に直接渡すために使用できる他のパターンはありますか?

4

3 に答える 3

14

ジョブ自体から、現在のジョブとその依存関係に関する情報にアクセスできます。これにより、最初のジョブの ID を明示的に渡す必要がなくなります。

ジョブを定義します。

from rq import Queue, get_current_job
from redis import StrictRedis

conn = StrictRedis()
q = Queue('high', connection=conn)

def first_job():
    return 'result of the first job'

def second_job():
    current_job = get_current_job(conn)
    first_job_id = current_job.dependencies[0].id
    first_job_result = q.fetch_job(first_job_id).result
    assert first_job_result == 'result of the first job'

ジョブをキューに入れます。

first = queue.enqueue(first_job)
second = queue.enqueue(second_job, depends_on=first)

current_jobは複数の依存関係を持つことができるので、リストであることに注意してくださいcurrent_job.dependencies

于 2016-06-08T22:05:56.197 に答える