asyncio einen Koroutine verwenden, kann mit einem Timeout ausgeführt werden, so dass es nach dem Timeout abgebrochen wird:Python asyncio Kraft Timeout
@asyncio.coroutine
def coro():
yield from asyncio.sleep(10)
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait_for(coro(), 5))
Das obige Beispiel wie erwartet funktioniert (es Timeout nach 5 Sekunden).
Wenn jedoch die Coroutine asyncio.sleep()
(oder andere asyncio-Koroutinen) nicht verwendet, scheint es nicht zu Timeout. Beispiel:
@asyncio.coroutine
def coro():
import time
time.sleep(10)
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait_for(coro(), 1))
Diese mehr als 10 Sekunden dauert, weil die time.sleep(10)
laufen wird nicht abgebrochen. Ist es in einem solchen Fall möglich, die Löschung der Coroutine zu erzwingen?
Wenn asyncio verwendet werden soll, um dies zu lösen, wie könnte ich das tun?
Ein weiteres nützliches Beispiel hier: https://github.com/calebmadrigal/asyncio-examples/blob/master/run_in_executor.py – shrx