L'attività è stata distrutta ma è in sospeso per ogni richiesta

Aug 22 2020

Sto iniziando un nuovo ciclo in ogni richiesta e sto ottenendo un errore inferiore quando interrompo manualmente il mio servizio.

ERROR:asyncio:Task was destroyed but it is pending!
task: <Task pending name='Task-192' coro=<AsyncioContextBase._run() running at C:\ProgramData\Anaconda3\lib\site-packages\caio\asyncio_base.py:54> wait_for=<Future cancelled>>

Ecco il mio codice:

loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
c = doSomething( maxtasks=100)
loop.run_until_complete(c.run())
try:
loop.stop()
loop.close()
print('done:')
except RuntimeError:
print('errr:')  

Ho anche provato a ottenere tutte le attività in sospeso prima di chiudere il ciclo utilizzando il codice seguente in modo da poter chiudere tutte le attività prima della chiusura, ma ricevo "RuntimeError: nessun ciclo di eventi in esecuzione"

pending = asyncio.all_tasks()

Qualcuno può dirmi come posso uccidere tutti questi compiti dopo che il mio ciclo è terminato. Non voglio che questi loop vengano eseguiti in background e prendano tutta la mia memoria

Risposte

eirirlar Aug 22 2020 at 17:12

Supponendo che tu stia usando caio in doSomething(). Questo ha funzionato per me con caio:

loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
context = caio.AsyncioContext(16, loop=loop)
loop.run_until_complete(main(context))
context.close()