Как использовать прослушивающий сокет динамического / adhoc сервера с серверами WSGI? - PullRequest
0 голосов
/ 12 мая 2018

Я хотел бы развернуть приложение Python, которое может запустить внутренний веб-сервер на 127.0.0.1/::1 на любом свободном в то время порту.Затем он должен запустить веб-браузер с URL-адресом, указывающим на локальный веб-сервер adhoc.

Теперь моя проблема: существуют ли веб-серверы WSGI, которые позволяют динамически привязывать их к свободному порту, а затем сделатьномер порта выбран для программы?Или я могу сам создать прослушивающий сокет и затем передать его на сервер WSGI для использования?

1 Ответ

0 голосов
/ 12 мая 2018

Использование wsgiref.simple_server:

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()
...