Python Webfaction 上的猎鹰
Python Falcon on Webfaction
我正在尝试启动 Falcon 并 运行在 Webfaction 上运行。我不完全是网络大师,所以我很难理解这些应用程序是如何提供服务的。
我的 Webfaction 应用设置为 mod_wsgi 4.5.3/Python 2.7
据我了解,Falcon 将在任何 WSGI 服务器上 运行。当我启动我的 mod_wsgi 服务器时,它会自动配置为像 Falcon 这样的东西到 运行 吗?或者我还需要安装 Gunicorn 之类的东西吗?
当我设置我的 webfaction 应用程序时,我收到如下目录结构:
app/htdocs/index.py
在 index.py 文件中,我将找到的示例放在 Falcon Tutorial
import falcon
class ThingsResource(object):
def on_get(self, req, resp):
"""Handles GET requests"""
resp.status = falcon.HTTP_200
resp.body = 'Hello world!'
# falcon.API instances are callable WSGI apps
wsgi_app = api = falcon.API()
# Resources are represented by long-lived class instances
things = ThingsResource()
# things will handle all requests to the '/things' URL path
api.add_route('/things', things)
我知道还有 运行ning WSGI 的说明,但这就是我的困惑所在 - webfaction 服务器是否已经 运行ning WSGI,或者我还需要像 Gunicorn 这样的东西,如果是这样 - 最好的配置方法是什么?我需要一个 cron 来保持 运行ning Gunicorn 吗?
谢谢!
更新:
我检查了错误日志并收到一个关于没有名为 "application"、
的变量的 WSGI 错误
所以我改变了:
wsgi_app = api = falcon.API()
至:
application = falcon.API()
这清除了错误,但是现在当我访问我的域时。com/things,我收到错误 404(未找到/不存在)。
所以,这让我回到了最初的问题,即接下来的步骤是什么?好像 url 没有被正确路由,所以它很可能与 httpd.conf 文件或类似文件有关 - 同样,这是我第一次尝试这样的设置.
这是答案(至少对于最初的问题,我敢打赌我会在不久的将来在同一个项目上搞砸其他事情)。
基本上,我能够将教程代码放入 Webfaction 在设置应用程序并在域上安装时生成的 index.py 文件中。所以,我的教程代码看起来像这样:
import falcon
class ThingsResource(object):
def on_get(self,req,resp):
resp.status = falcon.HTTP_200
resp.body = 'Hello World!'
api = application = falcon.API()
things = ThingsResource()
api.add_route('/things', things)
因为我找不到太多关于在 Webfaction 上启动 Falcon 应用程序的信息,所以我查看了 Webfaction 上的相似应用程序 运行(本例中为 Flask)。也就是说,我在 Flask docu 上找到了一个片段,展示了如何在 webfaction 上进行设置。我不确定这是否意味着我的整个应用程序都可以工作,但我知道 Falcon 教程代码至少可以工作。本质上,我只需要按照此处的说明编辑 httpd.conf 文件:Flask Webfaction
WSGIPythonPath /home/yourusername/webapps/yourapp/htdocs/
#If you do not specify the following directive the app *will* work but you will
#see index.py in the path of all URLs
WSGIScriptAlias / /home/yourusername/webapps/yourapp/htdocs/index.py
<Directory /home/yourusername/webapps/yourapp/htdocs/>
AddHandler wsgi-script .py
RewriteEngine on
RewriteBase /
WSGIScriptReloading On
</Directory>
我希望这对遇到类似问题的任何人有所帮助。
我正在尝试启动 Falcon 并 运行在 Webfaction 上运行。我不完全是网络大师,所以我很难理解这些应用程序是如何提供服务的。
我的 Webfaction 应用设置为 mod_wsgi 4.5.3/Python 2.7
据我了解,Falcon 将在任何 WSGI 服务器上 运行。当我启动我的 mod_wsgi 服务器时,它会自动配置为像 Falcon 这样的东西到 运行 吗?或者我还需要安装 Gunicorn 之类的东西吗?
当我设置我的 webfaction 应用程序时,我收到如下目录结构:
app/htdocs/index.py
在 index.py 文件中,我将找到的示例放在 Falcon Tutorial
import falcon
class ThingsResource(object):
def on_get(self, req, resp):
"""Handles GET requests"""
resp.status = falcon.HTTP_200
resp.body = 'Hello world!'
# falcon.API instances are callable WSGI apps
wsgi_app = api = falcon.API()
# Resources are represented by long-lived class instances
things = ThingsResource()
# things will handle all requests to the '/things' URL path
api.add_route('/things', things)
我知道还有 运行ning WSGI 的说明,但这就是我的困惑所在 - webfaction 服务器是否已经 运行ning WSGI,或者我还需要像 Gunicorn 这样的东西,如果是这样 - 最好的配置方法是什么?我需要一个 cron 来保持 运行ning Gunicorn 吗?
谢谢!
更新:
我检查了错误日志并收到一个关于没有名为 "application"、
的变量的 WSGI 错误所以我改变了:
wsgi_app = api = falcon.API()
至:
application = falcon.API()
这清除了错误,但是现在当我访问我的域时。com/things,我收到错误 404(未找到/不存在)。
所以,这让我回到了最初的问题,即接下来的步骤是什么?好像 url 没有被正确路由,所以它很可能与 httpd.conf 文件或类似文件有关 - 同样,这是我第一次尝试这样的设置.
这是答案(至少对于最初的问题,我敢打赌我会在不久的将来在同一个项目上搞砸其他事情)。
基本上,我能够将教程代码放入 Webfaction 在设置应用程序并在域上安装时生成的 index.py 文件中。所以,我的教程代码看起来像这样:
import falcon
class ThingsResource(object):
def on_get(self,req,resp):
resp.status = falcon.HTTP_200
resp.body = 'Hello World!'
api = application = falcon.API()
things = ThingsResource()
api.add_route('/things', things)
因为我找不到太多关于在 Webfaction 上启动 Falcon 应用程序的信息,所以我查看了 Webfaction 上的相似应用程序 运行(本例中为 Flask)。也就是说,我在 Flask docu 上找到了一个片段,展示了如何在 webfaction 上进行设置。我不确定这是否意味着我的整个应用程序都可以工作,但我知道 Falcon 教程代码至少可以工作。本质上,我只需要按照此处的说明编辑 httpd.conf 文件:Flask Webfaction
WSGIPythonPath /home/yourusername/webapps/yourapp/htdocs/
#If you do not specify the following directive the app *will* work but you will
#see index.py in the path of all URLs
WSGIScriptAlias / /home/yourusername/webapps/yourapp/htdocs/index.py
<Directory /home/yourusername/webapps/yourapp/htdocs/>
AddHandler wsgi-script .py
RewriteEngine on
RewriteBase /
WSGIScriptReloading On
</Directory>
我希望这对遇到类似问题的任何人有所帮助。