1
FlaskアプリケーションでRQ/RQ-Workerを実行しようとしています。私はそれを非常に簡単なテストケースにまで落とそうとしました。"ValueError"を投げるRQワーカー
- ユーザーが
/test
ページにアクセスしました。どのジョブがキューに入れられ、キューされたジョブが返されるjob_key
- 作業者(
worker.py
)は、キューに入れられたジョブを処理します。 - ユーザは
/retrieve/<job_key>
ページにアクセスして結果を取得できます。 [これは示されていない。]
現在のジョブがちょうどここ2 + 2
を追加することですアプリケーションのコードです:
from rq import Queue
from rq.job import Job
# import conn from worker.py
from worker import conn
app = Flask(__name__)
q = Queue(connection=conn)
def add():
return 2+2
@app.route('/test')
def test():
job = q.enqueue_call(func="add", args=None, result_ttl=5000)
return job.get_id()
if __name__ == "__main__":
app.run()
worker.py
ソースコードは次のようになります。
私の知る限り、アプリケーションコードは問題ではありません。ジョブをエンキューする/test
ページにアクセスできます。私は労働者を実行するしかし、一度、私は次のエラーを取得する:
Traceback (most recent call last):
File "/home/<>/dev/sched/venv/lib/python3.5/site-packages/rq/worker.py", line 588, in perform_job
rv = job.perform()
File "/home/<>/dev/sched/venv/lib/python3.5/site-packages/rq/job.py", line 498, in perform
self._result = self.func(*self.args, **self.kwargs)
File "/home/<>/dev/sched/venv/lib/python3.5/site-packages/rq/job.py", line 206, in func
return import_attribute(self.func_name)
File "/home/<>/dev/sched/venv/lib/python3.5/site-packages/rq/utils.py", line 149, in import_attribute
module_name, attribute = name.rsplit('.', 1)
ValueError: not enough values to unpack (expected 2, got 1)
私はラインのように感じる:
worker = Worker(list(map(Queue, listen)))
はちょうどB/Cのエラーの性質の問題ですが、私どのようにそれを修正するか分かりません。特にb/c I've seen other projectsは、まったく同じワーカーソースコードを使用しているようです。
私のテクノロジ・スタックは、次のとおりです。
- フラスコ(0.11.1)
- のRedis(2.10.5)
- RQ(0.6.0)
- RQ-労働者(0.0.1)
EDIT:
これはバグだと考えるのが始まりです。 RQの出典:issue #531でこの発行チケットをチェックしてください。
はならない '名前場合== "__main __"::'はい__name__' – Jonathan
@ジョナサン 'こと
ソリューションはエンキュー、例えばに "修飾" 名を供給することでした。修正されました。 – franklin