MesosスケジューラMarathonには、非同期HTTP APIがあります。例えば。ユーザーが/v2/apps
にJSONをポストしてアプリケーションをデプロイすると、デプロイメントIDが返されます。 idを使用してデプロイメント状態を/v2/deployments
にポーリングするか、または/v2/events
にサブスクライブしてdeployment_success
イベントを探します。Pythonのカスタムイベントを作成する方法Asyncio
コルーチンを使って非同期のPythonクライアントを作成したいと思います。例えば。 client.deploy_app(...)
は、deployment_success
イベントが到着しましたが、ブロックされていない状態に戻る必要があります。
どうすればこれらのメソッドをasyncioで実装できますか?イベントリスナーを作成するにはどうすればよいですか?イベントのループが作成されているように感じますが、イベントの登録方法はわかりません。あなたは(API docを参照)、ストリームを要求すべき展開の成功を追跡するために/v2/events
を使用する場合は
import asyncio
import aiohttp
async def post(url, json):
async with aiohttp.ClientSession() as session:
async with session.post(url, json=json) as resp:
return await resp.json()
async def main():
res = await post('http://httpbin.org/post', {'test': 'object'})
print(res['json']) # {'test': 'object'}
loop = asyncio.get_event_loop()
try:
loop.run_until_complete(main())
loop.run_until_complete(loop.shutdown_asyncgens())
finally:
loop.close()
:/v2/apps
のために必要な非同期ポストHTTPリクエストを作成
ありがとうございました。私は私の質問を十分に明確に表現していないのではないかと心配しています。私は '非同期はデフ(アプリ)を展開よりも、別の方法があるかどうかを知りたいのです: deployment_id =ポスト(アプリ) はとにかく競合状態を持っているdeployment_event(deployment_id)' を待って待っています。 – Karsten