【发布时间】:2012-04-16 10:47:00
【问题描述】:
我想在共享主机环境中运行 Python CGI。我按照 Flask 的示例提出了一个小应用程序,如下所示:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
@app.route("/pi")
def pi():
return "3.1416"
if __name__ == "__main__":
app.run()
我的.htaccess 包含:
Options +ExecCGI
AddHandler cgi-script .cgi .py .rb
DirectoryIndex index.cgi index.htm
而我的index.cgi 是
#!/usr/bin/env python
from wsgiref.handlers import CGIHandler
from firstflask import app
CGIHandler().run(app)
它成功地将路径 / 映射到 index(),但是它无法将路径 /pi 映射到 pi(),而是返回 404 错误。我想我错过了一些明显的东西。谢谢您的帮助。
【问题讨论】:
-
这是 Apache 的吗?我认为添加 Apache 标记可能会为您提供更多答案,因为这似乎更像是一个 Web 服务器配置问题。
-
您的主机只支持 CGI 还是支持 mod_python 或 mod_wsgi?这些是更好的选择。
-
Cixate,你说得对,这是 Apache。我是 python 网络框架的新手。 cgi 设置似乎比 mod-wsgi 更快。这就是我选择cgi的原因。另一件事,我怀疑它可能需要 url-rewrite。但是因为我没有看到文档中提到任何 url-rewrite,所以我认为没有必要。谢谢
-
CGI 设置起来可能更快,但性能比 WSGI 差得多,因为 python 应用程序实际上启动并停止了每个请求。您可以设置 WSGI like this,或者如果您正在寻找具有真正 Python 支持的廉价 Python 托管,请尝试免费使用 heroku.com。 docs.python-guide.org 是开始使用 Python 和 Python 托管的好资源。
-
谢谢,@Cixate。我会喜欢有更好的表现。要使用 WSGI,我不需要管理员权限来配置
<VirtualHost *>吗?如果我能从我对 PHP 友好的托管计划中解决这个问题,那就太好了。
标签: python apache cgi flask web-frameworks