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

2024-04-20 10:31:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

通常,您可以从命令行使用pserve启动金字塔应用程序,但我找不到任何文档或示例来说明如何在宿主应用程序框架中调用它。这需要这样做,金字塔代码可以访问宿主应用程序中的对象。在

这是Pyramid的实际用例还是应该寻找其他基于WSGI的框架来实现?在


Tags: 对象代码命令行文档框架pyramid应用程序示例
1条回答
网友
1楼 · 发布于 2024-04-20 10:31:38

WSGI应用程序基本上是一个接收输入并返回响应的函数,您不需要pserve来为WSGI应用程序提供服务,它更像是从.ini文件组装应用程序的包装器。在

看看金字塔文档中的Creating Your First Pyramid Application章节:

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并停止脚本。这使得让您的程序“驱动网络协议来控制远程设备”和同时为web页面提供服务(这与其他基于事件的平台,如节点.js在同一个进程中有两个服务器监听不同的端口是很简单的)。在

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

相关问题 更多 >