Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Support for listening on random port and opening browser without delays

Ouverte
#214 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
25/100
Type d'issue
Fonctionnalité
Clarté
À clarifier
Activité
À l'abandon
Stack technique
python
Domaine
backend

Piste de recherche

Start by reviewing the server startup path in livereload.server and the web.Application and Server references shown in the issue. Use the monkeypatch example to understand the requested random-port and browser-opening behavior. Done means the server supports these flows without delays and exposes enough startup hooks for subclassing or customization.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

type: feature

Hello,

I wanted to support opening a browser on a random local port, and got it working with a bit of monkeypatching:

        server = make_server(…)
                
        import tornado.web
        import tornado.httpserver
        import tornado.netutil                   
        import webbrowser
                    
        class Application(tornado.web.Application):
            def listen(self, *args, **kw):
                sockets = tornado.netutil.bind_sockets(0, 'localhost')
                server = tornado.httpserver.HTTPServer(self)
                server.add_sockets(sockets)
                pairs = []
                for s in sockets:        
                    pairs.append(s.getsockname()[:2])
                pairs.sort()
                host, port = pairs[0]
                if ":" in host:    
                    host = f"[{host}]"    
                url = f"http://{host}:{port}"    
                log.info("Listening on %s", url)    
        
                async def open_browser():        
                    webbrowser.open_new_tab(url)     
 
                tornado.ioloop.IOLoop.current().add_callback(open_browser)    
                return server

        # Monkey patch to be able to start servers in a smoother way that the
        # defaults of livereload
        import livereload.server
        livereload.server.web.Application = Application
        server.serve()

Integrating this in livereload seems to require some refactoring of how the server is started, and I didn't engage on it. I hope that my monkeypatched code can be a useful reference.

Ideally, I would have liked to be able to subclass Server or the Application used by server, and have enough hooks to intervene in the listening bit.

Langage dominant
Python
Étoiles
1.1k
Forks
149
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de lepture/python-livereload

Toutes les issues de lepture/python-livereload

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.