在PythonAnywhere部署Tornado应用时遭遇“Unhandled Exception”启动失败的问题求助
嘿,我来帮你排查这个启动失败的问题!在PythonAnywhere上部署Tornado的WSGI应用时出现「未处理异常」,通常是几个常见的小细节没做好,我一步步给你拆解:
最可能的几个原因
Tornado依赖没装(或安装版本不匹配)
PythonAnywhere的默认Python环境里并没有预装Tornado,如果你直接用了教程里的代码但没先安装依赖,import tornado.web这一步就会报错,直接触发未处理异常——这是最常见的坑!Python版本不匹配
比如你在Bash里用pip3 install tornado装了依赖,但你的Web应用设置里选的是Python 2.7(或者另一个不同的3.x版本),这时候对应环境里还是没有Tornado,同样会触发导入错误。WSGI文件的路径配置问题
如果你的Tornado代码放在了非默认路径,或者WSGI文件里没有正确添加项目目录到Python路径,也会导致找不到模块或者application对象的问题。
正确部署的完整示例步骤
我给你一套能跑通的标准流程,你照着来试试:
第一步:安装Tornado依赖
打开PythonAnywhere的Bash控制台,先确认你Web应用要用的Python版本(比如你设置的是Python 3.10),然后运行对应的pip命令安装:
pip3.10 install tornado
如果用了虚拟环境,先激活虚拟环境再装:
source /home/你的用户名/你的虚拟环境目录/bin/activate pip install tornado
第二步:编写正确的WSGI文件
比如你的用户名是luci,项目目录是/home/luci/my_tornado_app,就在这个目录下创建wsgi.py,内容如下(直接把Tornado代码写在这里最稳妥):
import tornado.web import tornado.wsgi class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello from Tornado on PythonAnywhere!") # 确保application是全局可访问的对象,PythonAnywhere会自动加载它 application = tornado.wsgi.WSGIApplication([ (r"/", MainHandler), ])
第三步:配置PythonAnywhere的Web应用设置
- 进入PythonAnywhere的「Web」标签页
- 把「Source code」的路径设为
/home/luci/my_tornado_app - 把「WSGI configuration file」的路径设为
/home/luci/my_tornado_app/wsgi.py - 确认「Python version」和你刚才安装Tornado的版本完全一致
第四步:重启并验证
点击「Reload 你的用户名.pythonanywhere.com」按钮,等几秒后刷新你的站点页面,应该就能看到Tornado输出的问候语了。
额外排查技巧
如果还是出问题,一定要去看详细错误日志!在Web标签页里找到「Error log」的链接,点进去就能看到具体的错误信息(比如「ImportError: No module named tornado」),这比模糊的「Unhandled Exception」有用多了——根据具体日志就能精准定位问题。
如果还是搞不定,把错误日志里的具体内容贴出来,我再帮你深挖!
备注:内容来源于stack exchange,提问作者LuciGamer 54

