5

リクエストライブラリをインポートして、tasks.py という名前のセロリモジュールで次のように定義しています。

@celery.task
def geturl(url):
    res = requests.get(url)
    return res.content

(tasks.py または REPL のいずれかから) タスクを呼び出すときはいつでも:

res = geturl.delay('http://www.google.com')
print res.get()

セロリ サーバーのログ エントリは次のとおりです。

[2012-12-19 18:49:58,400: INFO/MainProcess] 新しい HTTP 接続の開始 (1): www.google.com [2012-12-19 18:49:58,594: INFO/MainProcess] 新しい HTTP 接続の開始 ( 1): www.google.ca [2012-12-19 18:49:58,801: INFO/MainProcess] Task tasks.geturl[48182400-7d67-466b-ba5c-867747cb3974] 0.402245998383s で成功: なし

しかし、geturl('http://www.google.com') を呼び出してこれを同期的に実行すると、応答が返されます。私はドキュメントを読みましたが、これが機能しない理由について手がかりがないようです。これの主な用途は、API をポーリングすることです。誰かがこれが機能しない理由を説明してもらえますか?

ありがとう!

4

1 に答える 1

1

res.content単なるstrインスタンスであり、返品できない理由はありません。あなたの問題はおそらく他の場所、おそらくあなたのセロリの構成にあるでしょう。


多くの構成パラメーターは、結果の保存方法に影響を与えます。それらを見てください。
最初に確認したいのはですCELERY_IGNORE_RESULT

結果ブローカーの構成も確認する必要があります。

于 2012-12-20T01:04:58.523 に答える