Webfaction上的Python Falcon

时间:2016-08-24 00:28:51

标签: python-2.7 mod-wsgi webfaction falconframework

我试图让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)

我知道还有运行WSGI的说明,但这就是我的困惑所在 - webfaction服务器已经运行WSGI,还是我还需要类似Gunicorn的东西,如果是的话 - 什么是最好的配置方式?我是否需要一个cron来继续运行Gunicorn?

谢谢!

更新

我检查了错误日志并收到了一个关于没有名为" application",

的变量的WSGI错误

所以我改变了:

wsgi_app = api = falcon.API()

为:

application = falcon.API()

这清除了错误,但现在当我访问mydomain.com/things时,我收到错误404(找不到/不存在)。

所以,这让我回到原来的问题,接下来的步骤是什么?似乎网址没有被正确路由,所以很可能与httpd.conf文件或类似文件有关 - 再次,这是我第一次尝试使用这样的设置。

1 个答案:

答案 0 :(得分:0)

这是答案(至少对于最初的问题,我愿意打赌,在不久的将来,我会在同一个项目中弄乱别的东西)。

基本上,我能够将教程代码放在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上发现了一个片段,展示了如何设置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>

我希望这可以帮助任何有类似问题的人。