リクエストライブラリをインポートして、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 をポーリングすることです。誰かがこれが機能しない理由を説明してもらえますか?
ありがとう!