、それは完全に異なるCalling a coroutine from asyncio.Protocol.data_receivedコルーチンを呼び出して、将来asyncio.Protocol.data_received()で取得しますか?
しかし、PY35とPY34でasyncio
に似ているで、ここPY34で正しく実行できるコードですが、PY35にそれがで一時停止しますyield from
と決して戻ってきません。
# PY34
class RelayClient(asyncio.Protocol):
pass
class Server(asyncio.Protocol):
def data_received(self, data):
# I need to connect to another address, and get future result at current function.
# Also I could not run loop.run_until_complete().
loop = asyncio.get_event_loop()
result = yield from loop.create_connection(RelayClient, 'www.google.com', 443)
do_some_thing_with_result(result)
これはどのようにpython 3.5で行うのですか?
アドバイスありがとうございます。
[asyncio.Protocol.data \ _receivedからコルーチンを呼び出す]の可能な複製(https://stackoverflow.com/questions/29126340/calling-a-coroutine-from-asyncio-protocol-data-received) – kwarunek
@kwarunek私の質問を更新する – hfawja
問題は同じように見えます。 'Protocol.data_received'では' await'や 'yield from'を使うことはできません。代わりに' ensure_future'を使い、適切なコールバックを設定してください。 – kwarunek