0

をクライアント ライブラリとして使用Python 2.7beanstalkd serverて います。beanstalkc

ジョブのサイズにもよりますが、各ジョブの処理には約 500 ~ 1500 ミリ秒かかります。

私はcron、Beanstalkd キューにジョブを追加し続けるジョブと、ジョブを取得して処理する無限ループで実行される「ワーカー」を持っています。

例えば:

def get_job(self):
    while True:
        job = self.beanstalk.reserve(timeout=0)
        if job is None:
            timeout = 10 #seconds
            continue
        else:
            timeout = 0 #seconds
            self.process_job(job)

これにより、"timed out"例外が発生します。

これはキューからジョブを取得するためのベスト プラクティスですか?

誰かがここで私を助けてくれませんか?

4

1 に答える 1

4

呼び出しbeanstalk.reserve(timeout=0)とは、ジョブが使用可能になるまで0秒間待機することを意味します。したがって、呼び出されたときにジョブがすでにキューにない限り、すぐにタイムアウトになります。タイムアウトしないようにする場合は、を使用しますtimeout=None(または、がデフォルトであるため、timeoutパラメーターを省略しNoneます)。

于 2012-07-19T22:57:07.300 に答える