我试图让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文件或类似文件有关 - 再次,这是我第一次尝试使用这样的设置。
答案 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>
我希望这可以帮助任何有类似问题的人。