在 Pyramid 中获取 WSGI 应用程序的句柄
Get handle to WSGI app in Pyramid
我需要在分叉后关闭 pserve
/waitress
进程,但我无法获取对它的引用以便关闭它。通常,在金字塔 __init__.py
中,我会:
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
...
config = Configurator(settings=settings,
authentication_policy=authn_policy,
authorization_policy=authz_policy,
root_factory=Root)
config.scan()
return config.make_wsgi_app()
但是,我无法在某个地方存储带有 WSGI 应用程序的变量,因为它在应用程序视图等 globals()
中不可见
如何获取它的句柄或至少以其他方式关闭它?
Configurator()
调用似乎阻止在 main() 函数中向设置字典添加键,所以我使用了一个技巧,在 settings['post_configurator_settings']
下添加了一个字典,以后可以使用,所有这些都在__init__.py
当然是:
def main(global_config, **settings):
...
settings['post_configurator_settings'] = {}
config = Configurator(settings=settings,
...
root_factory=Root)
...
wsgi_app = config.make_wsgi_app()
settings['post_configurator_settings']['wsgi_app'] = wsgi_app
return wsgi_app
我需要在分叉后关闭 pserve
/waitress
进程,但我无法获取对它的引用以便关闭它。通常,在金字塔 __init__.py
中,我会:
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
...
config = Configurator(settings=settings,
authentication_policy=authn_policy,
authorization_policy=authz_policy,
root_factory=Root)
config.scan()
return config.make_wsgi_app()
但是,我无法在某个地方存储带有 WSGI 应用程序的变量,因为它在应用程序视图等 globals()
中不可见
如何获取它的句柄或至少以其他方式关闭它?
Configurator()
调用似乎阻止在 main() 函数中向设置字典添加键,所以我使用了一个技巧,在 settings['post_configurator_settings']
下添加了一个字典,以后可以使用,所有这些都在__init__.py
当然是:
def main(global_config, **settings):
...
settings['post_configurator_settings'] = {}
config = Configurator(settings=settings,
...
root_factory=Root)
...
wsgi_app = config.make_wsgi_app()
settings['post_configurator_settings']['wsgi_app'] = wsgi_app
return wsgi_app