2017-11-24 12 views
3

asyncio 미래의 결과를 설정하는 동안 아래의 메시지가 인쇄되고 있습니다.파이썬 asyncio에서 "Executing <Handle <TaskWakeupMethWrapper ..."경고는 무엇을 의미합니까

Executing <Handle <TaskWakeupMethWrapper object at 0x7fc3435141f8>(<Future finis...ection.py:260>) created at /media/stuff/stuff/projects/dare/dcds/dcds/common/connection.py:221> took 1.723 seconds 

어디서부터 시작해야할지 모르겠다. 하지만 asyncio 디버그 모드를 해제하면 충돌이 발생하고이 사실을 알 수 있습니다. 이 경고의

Task was destroyed but it is pending! 
task: <Task pending coro=<upload.<locals>.upload_coro() done, defined at /media/stuff/stuff/projects/dare/dcds/dcds/__main__.py:58> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x7fdf5df01d38>()]> cb=[_chain_future.<locals>._call_set_state() at /home/elviento/anaconda3/lib/python3.6/asyncio/futures.py:414]> 
+0

나는이 문제를 발견했다고 생각한다. 나는 WeakValueDictionary에서 이러한 미래를 지키고있다. WeakValueDictionary를 일반 사전으로 바꾸면 경고 및 오류가 사라집니다. WeakValueDictionary가 미래를 파괴하는 방법과 관련이있을 것 같습니다. –

+0

나는 몇 가지 것을 시도 할 것입니다. –

답변

2
Executing <Handle <TaskWakeupMethWrapper object at 0x7fc3435141f8>(<Future finis...ection.py:260>) created at /media/stuff/stuff/projects/dare/dcds/dcds/common/connection.py:221> took 1.723 seconds 

주요 부분은 took 1.723 seconds입니다 : 경고는 왜 표시되지 않으면 일부 코 루틴 (또는 작업) (정상적인 상황이 아니다 1.7 초 동안 이벤트 루프를 얼어 붙었다 것을 말한다, 대답 here 또는 더 나은 here를 읽으십시오.

asyncio는 디버그 모드가 설정된 경우에만이 문제를 추적합니다. 에 관계없이 디버그 모드의거야

Task was destroyed but it is pending! 

이 경고는,이 순간에 당신은 아직 실행 작업이 loop.close() 전화 것을 의미한다. 다시 정상적인 상황이 아닙니다 (이유를 보려면 here을 읽으십시오).


재현 가능한 코드 스 니펫이 없으면 더 말할 수 없습니다.

WeakValueDictionary에 작업을 저장하면 문제가 될 수 있습니다. 그렇습니다. 이벤트 루프를 닫기 전에 properly cancel 모든 작업을 완료해야합니다 (또는 완료 될 때까지 기다려야합니다).