2016-08-24 50 views
1

我試圖讓Falcon在Webfaction上運行。我並不是一個網絡專家,所以我很難花時間圍繞這些應用程序的服務。Webfaction上的Python Falcon

我Webfaction應用程序被設置爲mod_wsgi 4.5.3/Python 2.7

據我瞭解,獵鷹將任何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的說明,但這就是我的困惑所在 - Web服務器已經運行WSGI,還是需要類似Gunicorn的東西?如果是的話 - 最佳配置方式是什麼?我需要一個cron繼續運行Gunicorn嗎?

謝謝!

更新:

我檢查錯誤日誌,並收到了WSGI誤差大約沒有一個名爲 「應用程序」 的變量,

因此,我改變:

wsgi_app = api = falcon.API() 

到:

application = falcon.API() 

這清除了t他錯誤,但現在當我訪問mydomain.com/things時,我得到一個錯誤404(找不到/不存在)。

因此,這又回到了我原來的問題,即接下來的步驟是什麼?看起來好像url沒有被正確路由,所以它很可能與httpd.conf文件或類似的東西有關 - 這也是我第一次實現類似這樣的設置。

回答

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獵鷹應用很多信息,我看着Webfaction(在這個例子中瓶)多麼相似的應用程序運行。話雖如此,我在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> 

我希望這有助於有類似的問題,任何人。

+1

我看不到你需要任何「目錄」塊。腳本重新加載默認開啓。使用''WSGIScriptAlias''時不需要''AddHandler'',而且您似乎沒有使用重寫規則。 –

+0

根據你的Python代碼,當你從瀏覽器訪問「/ things''的URL路徑時,你必須在你的URL中使用。你沒有監聽''/''的路由。 –