python - Nuitka 编译的 Web 应用程序在退出时引发错误
问题描述
我正在开发一个实时 3d Web 应用程序项目。它建立在 Bottle 和 Gevent 之上(使用 bottle-websocket 插件)。
使用 Nuitka 编译后,我们的开发服务器工作正常,除了一个:在 Ctrl+C 退出时引发错误。错误输出如下所示
$ ./__main__.bin server
Bottle v0.12.18 server starting up (using GeventWebSocketServer())...
Listening on http://0.0.0.0:8080/
Hit Ctrl-C to quit.
^CKeyboardInterrupt
2019-12-20T17:05:28Z
/usr/lib/python3/dist-packages/apport/report.py:13: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
import fnmatch, glob, traceback, errno, sys, atexit, locale, imp
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/gevent/baseserver.py", line 369, in serve_forever
self._stop_event.wait()
File "src/gevent/event.py", line 127, in gevent._event.Event.wait
File "src/gevent/_abstract_linkable.py", line 192, in gevent.__abstract_linkable.AbstractLinkable._wait
File "src/gevent/_abstract_linkable.py", line 165, in gevent.__abstract_linkable.AbstractLinkable._wait_core
File "src/gevent/_abstract_linkable.py", line 169, in gevent.__abstract_linkable.AbstractLinkable._wait_core
File "src/gevent/_greenlet_primitives.py", line 60, in gevent.__greenlet_primitives.SwitchOutGreenletWithLoop.switch
File "src/gevent/_greenlet_primitives.py", line 60, in gevent.__greenlet_primitives.SwitchOutGreenletWithLoop.switch
File "src/gevent/_greenlet_primitives.py", line 64, in gevent.__greenlet_primitives.SwitchOutGreenletWithLoop.switch
File "src/gevent/__greenlet_primitives.pxd", line 35, in gevent.__greenlet_primitives._greenlet_switch
KeyboardInterrupt
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/yunbo/Workspace/jk/backend/__main__.py", line 80, in <module>
File "/home/yunbo/Workspace/jk/backend/__main__.py", line 56, in main
File "/home/yunbo/Workspace/jk/backend/jk/system/server/server.py", line 41, in run
run(
File "/usr/local/lib/python3.6/dist-packages/bottle.py", line 3137, in run
server.run(app)
File "/usr/local/lib/python3.6/dist-packages/bottle_websocket/server.py", line 17, in run
server.serve_forever()
File "/usr/local/lib/python3.6/dist-packages/gevent/baseserver.py", line 371, in serve_forever
Greenlet.spawn(self.stop, timeout=stop_timeout).join()
File "src/gevent/greenlet.py", line 588, in gevent._greenlet.Greenlet.spawn
File "src/gevent/greenlet.py", line 258, in gevent._greenlet.Greenlet.__init__
File "src/gevent/greenlet.py", line 150, in gevent._greenlet._extract_stack
TypeError: Cannot convert compiled_frame to frame
为什么会这样?
解决方案
推荐阅读
- mysql - MYSQL - 将 GROUP 与 JOIN 一起使用
- java - org.springframework.boot.web.support.does 不存在
- django - Django如何使ManyToMany字段的每个成员都是唯一的?
- axapta - AOT 查询关系或案例
- amazon-web-services - Alexa 向 AWS Lambda 发送了多个请求
- php - 删除 mysqli_connect() (HY000/2002) 警告并通过 JSON 对象发送错误
- spring-boot - 处理 OneToMany 关系时无法保存父 ID
- jsf - Weblogic 12c R2 (12.2.1.3) 错误 myfaces timeout java.sun.com with web.xml 2.3 tag
- r - 如何从R输出比较Cox回归中不同水平的风险比?
- mysql - 如何使用 Spring MVC 框架从 MySQL 下载 BLOB