Запустите простой веб-сервер и одновременно запустите браузер в Python
Я хочу запустить простой веб-сервер локально, а затем запустить браузер с только что обработанным URL-адресом. Это то, что я хотел бы написать,
from wsgiref.simple_server import make_server
import webbrowser
srv = make_server(...)
srv.blocking = False
srv.serve_forever()
webbrowser.open_new_tab(...)
try:
srv.blocking = True
except KeyboardInterrupt:
pass
print 'Bye'
Проблема в том, что я не мог найти способ установить blocking
опция для простого сервера wsgiref. По умолчанию он блокируется, поэтому браузер будет запускаться только после того, как я его остановлю. Если я сначала запускаю браузер, запрос еще не обработан. Я бы предпочел использовать http-сервер из стандартной библиотеки, а не внешний, как торнадо.
1 ответ
Решение
Вы должны либо порождать поток с сервером, чтобы продолжить поток управления, либо использовать 2 процесса Python.
непроверенный код, вы должны понять
class ServerThread(threading.Thread):
def __init__(self, port):
threading.Thread.__init__(self)
def run(self):
srv = make_server(...)
srv.serve_forever()
if '__main__'==__name__:
ServerThread().start()
webbrowser.open_new_tab(...)