Запустите простой веб-сервер и одновременно запустите браузер в Python - PullRequest
0 голосов
/ 10 октября 2010

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

1 голос
/ 10 октября 2010

Вам либо нужно создать поток с сервером, чтобы вы могли продолжить свой поток управления, либо использовать 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(...)
...