ちょうど本当にクールに見えるasynchで実験を始めました。私は永遠に走る非同期のコルーチンで先物を使用しようとしているが、私はこのエラーを取得:loop_foreverで未来を使うPython
Task exception was never retrieved
future: <Task finished coro=<slow_operation() done, defined at ./asynchio-test3.py:5> exception=InvalidStateError("FINISHED: <Future finished result='This is the future!'>",)>
これは予想通り、私は先物に関連する3行を削除した場合に実行される私のコードです:
import asyncio
@asyncio.coroutine
def slow_operation():
yield from asyncio.sleep(1)
print ("This is the task!")
future.set_result('This is the future!')
asyncio.async(slow_operation())
def got_result(future):
print(future.result())
loop = asyncio.get_event_loop()
future = asyncio.Future()
future.add_done_callback(got_result)
asyncio.async(slow_operation())
try:
loop.run_forever()
finally:
loop.close()
非常にクールです。ありがとうございました。しかし、私は今、なぜ先物が必要なのか尋ねる段階にあります。私はクロトーネから通常の機能を呼び出すことができますか、それはなぜfuture.set_resultですか?必要ですか? – dpetican
@dpetican、申し訳ありませんが、私はそれに答えることはできません。別の質問を投稿するのはどうですか? – falsetru
短い答えは、関数が非同期である必要があるかどうかによって異なります。 – dirn