Запустите простой веб-сервер и запустить браузер одновременно в Python

StackOverflow https://stackoverflow.com/questions/3897896

Вопрос

Я хочу начать простое веб-сервер локально, а затем запустить браузер с 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 -сервер из стандартной библиотеки, а не внешний, такой как торнадо.

Это было полезно?

Решение

Вы либо должны вызывать нить с сервером, поэтому вы можете продолжить свой контрольный поток, либо необходимо использовать 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(...)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top