いくつかの珍しい制約のため、応答を返す前に別のサービスからコールバックURLを同期的に待つ必要があります。現在、私は似た何かを持っている:Python 3 asyncioでコールバックを同期して待機する方法を実装しますか?
ROUTE = '/operation'
async def post(self):
##SOME OPERATIONS##
post_body = { 'callbackUrl' : 'myservice.com/cb' }
response = await other_service.post('/endpoint')
global my_return_value
my_return_value = None
while not my_return_value:
pass
return self.make_response(my_return_value)
それから私は、コールバックURLを処理するための方法を持っているようなもの:このコードの問題は、それが永遠にさえ永遠にそのwhileループの中に閉じ込めてしまうことです
ROUTE = '/cb'
async def post(self):
##OPERATIONS###
global my_return_value
my_return_value = some_value
return web.json_response()
をコールバックURLが呼び出された場合。私はこれを行うには良い方法があると思うが、私はそれについて行く方法やgoogleのためにどのように行くのかわからない。何か案は?
ありがとうございます!ただ、クイックスキャン
のようなものがありますが、これはおそらくより良い方法ですが、あなたの欠点は間違いないと思います'グローバルmy_return_value'コールバックルート。 – smarx
なぜ、 'other_service.post()'が '(some_value、web.json_response())'タプルを返さないのでしょうか? –
そして、投稿を呼び出した後で 'my_return_value = None'を設定しているので無限ループになります。あなたのコルーチンは*まだ順調です*、 '/ operation'' post()'コルーチンは 'response = await other_service.post( '/ endpoint')'が返るまで続かないでしょう。 –