2010-04-21 68 views
2

我評價一個PyAMF的取代我們目前PHP(啊)AMF服務框架,我無法找到信息的一個關鍵部分,讓我提供切換一個令人信服的用例:PyAMF可以通過文件系統支持服務部​​署嗎?

現在,只需將.php文件放入文件系統即可部署新的AMF服務;下一次訪問時,新服務正在發揮作用。刪除服務就像刪除提供它的.php文件一樣簡單,並且更新它相應地很簡單。我需要和PyAMF一樣的易於部署。如果我們不得不重寫我們的安裝程序來部署這些服務,那麼這將是一個不起眼的事情。

因此,我需要知道的是,PyAMF可以通過文件系統支持新的服務發現,它是否可以通過相同的方式支持服務升級和刪除,如果是,那麼設置它的最佳方式是什麼去做這個?

我對任何各種服務器選項都開放;我可以很容易地使用cherrypy,django,無論是自己安裝還是運行,甚至可以使用mod_python或mod_wsgi。

回答

0

我使用PyAMF和Django一起。一個可能的解決方案可以大致是這樣的:

  1. 創建一個包含所有不同的AMF服務PY文件
  2. 創建wrapps的DjangoGateway和初始化所有的服務視圖的Python模塊。這裏面看法,你可以做到以下幾點:
    • 重裝()您的服務模塊
    • 填充基於IE的文件名的字典({SERVICE_NAME:SERVICE_INSTANCE})
    • 實例化DjangoGateway本字典並讓它處理傳入的請求。

這是基於這樣的事實,你只能像沒有重新啓動服務器的任何其他行動部署文件hackish的解決方案。

+0

謝謝您的初步建議。我承認,如果我能找到一個解決方案,我正在尋找一個非hacky的解決方案。不過,我會記住這一點。我不認爲你有一個完整的例子或指向這個方法的教程的鏈接? – 2010-04-21 17:03:20

+0

不,對不起,我沒有。但最簡單的方法將是fastcgi的lighttpd。然後,將新的fcgi python文件放入服務器根目錄中。 – 2010-04-22 07:48:32

2

web2py包含pyamf支持。它的工作方式是,你創造的功能,如

def add(a,b): return a+b 

,然後你@ service.amfrpc3(「域」)

@service.amfrpc3('domain') 
def add(a,b): return a+b 

你並不需要重新啓動Web服務器或做裝飾他們還要別的嗎。您只需在控制器文件(定義服務的文件)中添加和刪除功能,並使服務可用或已刪除。您也可以使用其他協議(xmlrpc,jsonrpc,rss,csv,xml,json)使用多個裝飾器來提供相同的功能。

@service.xmlrpc 
@service.jsonrpc 
@service.amfrpc3('domain') 
def add(a,b): return a+b 

您不需要實例化網關(與其他框架一樣。所有裝飾功能都可以通過你不需要寫,因爲它已經在腳手架的應用程序(由web2py會爲您創建)一個動作暴露:

def call(): return service() 

功能可以訪問web2py的數據庫抽象層(DAL )和(有一些限制)web2py認證機制。

您可以使用shell(emacs/vi/etc)編輯包含該功能的控制器,但您也可以使用基於web2py的基於Web的IDE(稱爲「admin」)並使用瀏覽器添加服務。

Web2py包含一個票務系統,因此很容易調試Web服務。任何服務器端錯誤都會導致票證。管理員中有一個網頁列出了所有的門票。你點擊一個,它會顯示導致問題的代碼和完整的回溯。

您可以導入並使用任何第三方python模塊。你必須預先安裝pyamf。

這是有據可查的在本書的第9章:

http://web2py.com/book/default/section/9/2

的web2py應用程序是非常容易部署。一種方法是點擊並使用管理員單擊。另一種方法是將文件從一臺機器複製到另一臺機器。沒有元數據,沒有安裝程序(甚至沒有web2py本身),沒有設置,沒有配置文件。 後一種方法在一定程度上描述如下:

http://gluonframework.wordpress.com/2010/03/02/shell-only-web2py/

的web2py基於WSGI。它可以運行在你能想到的任何web服務器上(apache + mod_wsgi/mod_python/mod_proxy; lighttpd/cheorkeey/ngnix + fcgi/wsgi.py; cherrypy;等等)。 一些選項進行了詳細的記錄在這裏:

http://www.web2py.com/book/default/section/11/0

其他選項可以http://web2pyslices.com

web2py中發現也有它自己的Web服務器,火箭,它支持HTTPS和速度非常快。 web2py代碼也可以部署在Google App Engine上。

檢查web2py google羣組上的活動。

相關問題