从另一个应用程序中调用金字塔框架应用程序

我有一个Python应用程序运行在一个驱动网络协议来控制远程设备的框架中。 现在我想添加一个基于浏览器的监视和控制,我正在寻找金字塔框架来构建它。

通常你使用pserve从命令行启动Pyramid应用程序,但是我找不到任何文档或例子来说明如何在宿主应用程序框架中调用它。 这需要以Pyramid代码可以访问主机应用程序中的对象的方式完成。

这是金字塔的实际用例还是我应该寻找其他一些基于WSGI的框架来执行此操作?


一个WSGI应用程序基本上是接收一些输入,并返回一个响应,你并不真正需要的功能pserve以服务WSGI应用程序,它更像是组装从.ini文件的应用程序的包装。

在金字塔文档中查看创建您的第一个金字塔应用程序章节:

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response

def hello_world(request):
    return Response('Hello %(name)s!' % request.matchdict)

if __name__ == '__main__':
    config = Configurator()
    config.add_route('hello', '/hello/{name}')
    config.add_view(hello_world, route_name='hello')
    app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 8080, app)
    server.serve_forever()

最后两行创建一个侦听端口8080的服务器。

现在,棘手的问题是serve_forever调用被阻塞,即程序在该行停止,直到您按Ctrl-C并停止脚本。 这使得您的程序“驱动网络协议来控制远程设备”并同时提供网页(这与其他基于事件的平台不同,比如Node.js不重要,它不重要有两台服务器在同一进程内的不同端口上侦听)。

解决这个问题的一个可能的方法是在一个单独的线程中运行web服务器。

链接地址: http://www.djcxy.com/p/69097.html

上一篇: Invoking a pyramid framework application from inside another application

下一篇: Pyramid decorator chaining