Hi Glyph,
Thanks for the suggestion.
I tried the suggestion.. While it fixes the self.channel NoneType issue.. It creates another issue.
Traceback (most recent call last):
File "/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/events.py", line 88, in _run
self._context.run(self._callback, *self._args)
File "/usr/local/lib/python3.7/site-packages/twisted/internet/defer.py", line 827, in adapt
adapt.actual.callback(extracted)
File "/usr/local/lib/python3.7/site-packages/twisted/internet/defer.py", line 460, in callback
self._startRunCallbacks(result)
File "/usr/local/lib/python3.7/site-packages/twisted/internet/defer.py", line 568, in _startRunCallbacks
self._runCallbacks()
--- <exception caught here> ---
File "/usr/local/lib/python3.7/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
current.result = callback(current.result, *args, **kw)
......
request.finish()
File "/usr/local/lib/python3.7/site-packages/twisted/web/server.py", line 268, in finish
return http.Request.finish(self)
File "/usr/local/lib/python3.7/site-packages/twisted/web/http.py", line 1071, in finish
"Request.finish called on a request after its connection was lost; "
builtins.RuntimeError: Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
I have got some handle on the issue. I was wondering if you have any advise on how to debug the issue.
Somewhere in the codebase are async/await code (from asyncio world). Hence, when the connection is closed down by client, seems like those pending coroutines are lingering on.
def connectionLost(self, channel, reason):
t = asyncio.all_tasks(asyncio.get_event_loop())
print("pending tasks ", len(t))
The above does shows the list of pending tasks. I am wondering if you have any advice on how to kill these coroutines?
Also, I apologize if this is the wrong community to ask and if I should post it to asyncio community?
Thanks for all the help.
Regards,
Waqar