2010-04-21 72 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群组上的活动。

相关问题