如何在 WSGI 服务器上使用 dynamic/adhoc 服务器监听套接字?
How to use dynamic/adhoc server listening socket with WSGI servers?
我想部署一个 Python 应用程序,然后可以在 127.0.0.1/::1 上的任何端口上启动一个内部网络服务器。然后它应该启动一个 Web 浏览器,其中 URL 指向本地 adhoc Web 服务器。
我现在的问题是:是否有任何 WSGI 网络服务器允许将它们动态绑定到一个空闲端口,然后让选择的端口号可供程序使用?或者我可以自己创建一个监听套接字,然后交给一个WSGI服务器使用吗?
import wsgiref.simple_server
your_app = wsgiref.simple_server.demo_app
server = wsgiref.simple_server.make_server('127.0.0.1', 0, your_app)
_, port = server.server_address
# start the browser, perhaps on a separate thread after a delay
server.serve_forever()
使用Cheroot:可能有更简单的方法,但这种方法有效:
import threading, time, cheroot.wsgi
server = cheroot.wsgi.Server(('127.0.0.1', 0), your_app)
def get_port():
while not server.ready:
time.sleep(0.1)
_, port = server.bind_addr
# start the browser
threading.Thread(target=get_port).start()
server.start()
我想部署一个 Python 应用程序,然后可以在 127.0.0.1/::1 上的任何端口上启动一个内部网络服务器。然后它应该启动一个 Web 浏览器,其中 URL 指向本地 adhoc Web 服务器。
我现在的问题是:是否有任何 WSGI 网络服务器允许将它们动态绑定到一个空闲端口,然后让选择的端口号可供程序使用?或者我可以自己创建一个监听套接字,然后交给一个WSGI服务器使用吗?
import wsgiref.simple_server
your_app = wsgiref.simple_server.demo_app
server = wsgiref.simple_server.make_server('127.0.0.1', 0, your_app)
_, port = server.server_address
# start the browser, perhaps on a separate thread after a delay
server.serve_forever()
使用Cheroot:可能有更简单的方法,但这种方法有效:
import threading, time, cheroot.wsgi
server = cheroot.wsgi.Server(('127.0.0.1', 0), your_app)
def get_port():
while not server.ready:
time.sleep(0.1)
_, port = server.bind_addr
# start the browser
threading.Thread(target=get_port).start()
server.start()