1
私は非同期メソッドを起動する竜巻IOLoopのrun_syncでメソッドを実行したいと思います。非同期サブルーチンの作成中にPython tornadoのrun_syncを使用するには?
はここにアイデアだ:だから
@gen.coroutine
def async(string):
print string
@gen.coroutine
def sync():
string_list = yield async_call()
for string in string_list:
async(string=string)
loop = IOLoop.current()
loop.run_sync(lambda: sync)
、同期のすべては同期に発生する必要がありますが、非同期が呼び出される順序は重要ではありません。これは竜巻で可能ですか?
ほとんど、実際に機能をスケジュールして実行する非同期を呼び出す、しない限りioloopが停止します。非同期関数では、ioloopを実行する必要があります。 'yield'を使うと、非同期的に終了するまで待機します。 – kwarunek
@kwarunekあなたが言及してくれてありがとう、私は私のマシンでこれをチェックして、それはあなたが言うように実行するようです。しかし、私には明らかではないことが1つあります: 'async'メソッドが' sync'よりも終了するのに時間がかかる場合、IOLoopは終了する前に止められ、 'async'が正しく完了するとは想像もしませんか否か。 – pupizoid