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>

我希望这对遇到类似问题的任何人有所帮助。