Porting a Legacy Pylons Application Piecemeal

你想从 Pylons 1.0搬到 Pyramid ,但你不能很快管理一个批发港口。你想知道在现有的 Pylons 项目中开始使用 Pyramid 的某些部分是否可行。

一个想法是使用一个 Pyramid “未找到视图”,该视图委托给现有的 Pylons 应用程序,并分段端口:

 1# ... obtain pylons WSGI application object ...
 2from mypylonsproject import thepylonsapp
 3
 4class LegacyView(object):
 5    def __init__(self, app):
 6        self.app = app
 7    def __call__(self, request):
 8        return request.get_response(self.app)
 9
10if __name__ == '__main__':
11   legacy_view = LegacyView(thepylonsapp)
12   config = Configurator()
13   config.add_view(context='pyramid.exceptions.NotFound', view=legacy_view)
14   # ... rest of config ...

在这一点上,只要 Pyramid 不能为请求提供服务,因为URL与任何内容都不匹配,它就将调用pylons应用程序作为回退,这将正常返回内容。在这一点上,您可以开始逐步将逻辑从 Pylons 应用程序移动到 Pyramid 中,直到您移植了所有内容。