Python 在flask应用程序中添加ipdb时,会引发RuntimeError:线程中没有当前事件循环

Python 在flask应用程序中添加ipdb时,会引发RuntimeError:线程中没有当前事件循环,python,debugging,ipdb,Python,Debugging,Ipdb,好的,现在我正在开发SimpleFlask应用程序,它正在工作,但在工作时,我需要在某些api上使用ipdb,在我添加它之后 Traceback (most recent call last): File "/home/amir/Workspace/mmb/recsysenv/lib/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app response = self.full_dispatch_reque

好的,现在我正在开发SimpleFlask应用程序,它正在工作,但在工作时,我需要在某些api上使用ipdb,在我添加它之后

    Traceback (most recent call last):
  File "/home/amir/Workspace/mmb/recsysenv/lib/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
.
.
.

  File "/usr/local/lib/python3.6/bdb.py", line 51, in trace_dispatch
    return self.dispatch_line(frame)
  File "/usr/local/lib/python3.6/bdb.py", line 69, in dispatch_line
    self.user_line(frame)
  File "/usr/local/lib/python3.6/pdb.py", line 261, in user_line
    self.interaction(frame, None)
  File "/home/amir/Workspace/mmb/recsysenv/lib/python3.6/site-packages/IPython/core/debugger.py", line 294, in interaction
    OldPdb.interaction(self, frame, traceback)
  File "/usr/local/lib/python3.6/pdb.py", line 352, in interaction
    self._cmdloop()
  File "/usr/local/lib/python3.6/pdb.py", line 321, in _cmdloop
    self.cmdloop()
  File "/home/amir/Workspace/mmb/recsysenv/lib/python3.6/site-packages/IPython/terminal/debugger.py", line 97, in cmdloop
    line = self.pt_app.prompt() # reset_current_buffer=True)
  File "/home/amir/Workspace/mmb/recsysenv/lib/python3.6/site-packages/prompt_toolkit/shortcuts/prompt.py", line 986, in prompt
    return self.app.run()
  File "/home/amir/Workspace/mmb/recsysenv/lib/python3.6/site-packages/prompt_toolkit/application/application.py", line 788, in run
    return get_event_loop().run_until_complete(self.run_async(pre_run=pre_run))
  File "/usr/local/lib/python3.6/asyncio/events.py", line 694, in get_event_loop
    return get_event_loop_policy().get_event_loop()
  File "/usr/local/lib/python3.6/asyncio/events.py", line 602, in get_event_loop
    % threading.current_thread().name)
RuntimeError: There is no current event loop in thread 'Thread-1'.
之后,我在flask文件中添加了类似的线程片段

    from threading import Thread
    t = Thread(target=app, args=())
    t.daemon = True
    t.start()

    t.join()
    if __name__ == '__main__':
        app.run()
但它提高了

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "/usr/local/lib/python3.6/threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
TypeError: __call__() missing 2 required positional arguments: 'environ' and 'start_response'

我尝试了调试模式和非调试模式

您真的需要将Flask应用程序包装在线程中吗?我不确定,我这样做是为了让线程与ipdbI一起工作。我也遇到了这个问题,我以前从未遇到过,所以这似乎是最近的问题。我查看了最近发布的
ipdb
库,ipython是它的一个依赖项。我将
ipython
降级为较旧的版本(特别是7.0.0),现在我的调试器正在工作。尝试显式降级ipython(例如,pip install ipython==7.0.0)。