aiosocks
aiosocks copied to clipboard
Occasional InvalidStateError
If I put in a loop a function which creates a Thread which connects to proxy (one proxie at each iteration) and disconnects immediately, sometimes I get errors like this:
Exception in callback Future.set_result(True)
handle: <Handle Future.set_result(True) created at D:\!_Work\Python38\lib\site-packages\aiosocks\protocols.py:92>
source_traceback: Object created at (most recent call last):
File "D:\!_Work\Python38\lib\concurrent\futures\thread.py", line 80, in _worker
work_item.run()
File "D:\!_Work\Python38\lib\concurrent\futures\thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "D:\!_Work\Python38\lib\asyncio\runners.py", line 44, in run
return loop.run_until_complete(main)
File "D:\!_Work\Python38\lib\asyncio\base_events.py", line 603, in run_until_complete
self.run_forever()
File "D:\!_Work\Python38\lib\asyncio\base_events.py", line 570, in run_forever
self._run_once()
File "D:\!_Work\Python38\lib\asyncio\base_events.py", line 1851, in _run_once
handle._run()
File "D:\!_Work\Python38\lib\asyncio\events.py", line 81, in _run
self._context.run(self._callback, *self._args)
File "D:\!_Work\Python38\lib\site-packages\aiosocks\protocols.py", line 92, in negotiate
self._loop.call_soon(self._waiter.set_result, True)
Traceback (most recent call last):
File "D:\!_Work\Python38\lib\asyncio\events.py", line 81, in _run
self._context.run(self._callback, *self._args)
asyncio.exceptions.InvalidStateError: invalid state
For some reason, _waiter
is already cancelled when we are trying to set result to it, which lead to error.