如何在PythonAnywhere的wsgi.py中创建两个Flask应用?
在PythonAnywhere上配置多个Python应用的解决方法
你当前的WSGI脚本只把app1赋值给了服务器默认加载的application变量,所以只有app1能正常响应,访问app2时自然返回404。下面提供两种可行的配置方案:
方案1:同一域名下按路径分发应用
用WSGI中间件实现URL路由分发,让不同路径对应不同应用,修改你的WSGI脚本如下:
import sys from werkzeug.middleware.dispatcher import DispatcherMiddleware # 配置第一个应用路径 project_one = '/Projects/One' if project_one not in sys.path: sys.path = [project_one] + sys.path from one import app1 # 配置第二个应用路径 project_two = '/Projects/Two' if project_two not in sys.path: sys.path = [project_two] + sys.path from two import app2 # 设置路由规则:访问 /app2 开头的路径时,转发给app2 application = DispatcherMiddleware(app1, { '/app2': app2 })
- 若用Flask,需要给app2添加
APPLICATION_ROOT = '/app2'配置,避免内部路由冲突 - 静态文件需对应配置路径,比如app2的静态资源要映射到
/app2/static/
方案2:为每个应用单独创建Web实例
这是更清晰的方式,适合应用独立运行的场景:
- 登录PythonAnywhere后台,进入「Web」页面,点击「Add a new web app」
- 按照向导选择Python版本,完成新应用创建
- 进入新应用的WSGI配置页面,替换默认代码为:
import sys project_two = '/Projects/Two' if project_two not in sys.path: sys.path = [project_two] + sys.path from two import app2 as application
- 配置新应用的访问路径(比如子域名
youraccount.pythonanywhere.com/app2),重启两个应用即可
额外注意
- 两个应用的依赖环境要区分开,建议为每个应用单独配置虚拟环境
- 修改配置后务必重启对应应用,确保生效
内容的提问来源于stack exchange,提问作者Austin Marquis
相关产品推荐
相关产品推荐

