2010-10-09 5 views
0

Je veux démarrer un simple serveur web localement, puis lancer un navigateur avec une URL que je viens de servir. C'est quelque chose que je voudrais écrire,Démarrer un serveur web simple et lancer un navigateur simultanément en Python

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' 

Le problème est, je ne pouvais pas trouver un moyen de définir une option blocking pour le serveur simple wsgiref. Par défaut, il bloque, donc le navigateur ne serait lancé qu'après l'avoir arrêté. Si je lance d'abord le navigateur, la demande n'est pas encore traitée. Je préférerais utiliser un serveur http de la bibliothèque standard, pas externe, comme tornado.

Répondre

1

Vous devez générer un thread avec le serveur, vous pouvez donc continuer avec votre flux de contrôle, ou vous devez utiliser 2 processus python.

code non testé, vous devriez obtenir l'idée


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