m2wsgi er en Python-modul som gir en WSGI gateway behandleren for Mongrel2 web server, noe som gir enkel distribusjon av Python-apps på Mongrel2. & Nbsp; Du kan også finne sin støtte klasser nyttig for å utvikle ikke-WSGI handlers i Python.
Kommandolinjebruk
Den enkleste måten å bruke denne pakken er som et kommandolinje launcher:
python -m m2wsgi dotted.app.name tcp: //127.0.0.1: 9999
Dette vil koble til Mongrel2 på den angitte forespørsel port og begynne å håndtere forespørsler ved å føre dem gjennom den angitte WSGI app. Som standard vil du få en enkelt arbeidstaker tråd håndtere alle forespørsler; øke antall tråder som så:
python -m m2wsgi --num-tråder = 5 dotted.app.name tcp: //127.0.0.1: 9999
Eller hvis trådene ikke er din greie, kan du bruke eventlet å stokke biter rundt som så:
python -m m2wsgi --io = eventlet dotted.app.name tcp: //127.0.0.1: 9999
Jeg er interessert i å legge til støtte for andre IO moduler som gevent; bidrag velkommen.
programma Bruk
Hvis du har mer kompliserte behov, kan du bruke m2wsgi fra programmet. Den største klassen er "WSGIHandler" som gir en enkel server grensesnitt. Det samme som ovenfor kommandolinjebruk er:
fra m2wsgi.base import WSGIHandler
behandleren = WSGIHandler (my_wsgi_app, "tcp: //127.0.0.1: 9999")
handler.serve ()
For bedre kontroll over forbindelsen mellom behandleren og Mongrel2, lage din egen Connection objektet:
fra m2wsgi.base import WSGIHandler, Tilkoblings
conn = Connection (send_spec = "tcp: //127.0.0.1: 9999",
& Nbsp; recv_spec = "tcp: //127.0.0.1: 9999",
& Nbsp; send_ident = "9a5eee79-dbd5-4f33-8fd0-69b304c6035a")
behandleren = WSGIHandler (my_wsgi_app, conn)
handler.serve ()
Ikke vi allerede har en av disse?
Flere faktisk:
& Nbsp; * https://github.com/berry/Mongrel2-WSGI-Handler
& Nbsp; * https://bitbucket.org/dholth/mongrel2_wsgi
Ingen av dem fullt ut oppfylt mine behov. Spesielt har denne pakken gjennomsiktig støtte for:
& Nbsp; * du delvis respons koding
& Nbsp; * "async upload" av store forespørsel organer
& Nbsp; * pluggbare IO backends (f.eks eventlet, gevent)
Det er også designet fra grunnen opp spesielt for Mongrel2. Dette betyr at det blir mye funksjonalitet for gratis, og koden er enklere og lettere som et resultat.
For eksempel, er det ingen eksplisitt forvaltning av en threadpool og forespørsel kø som du kan finne i f.eks den Cherrypy server. I stedet, du bare starte opp så mange tråder som du trenger, har dem alle koble til samme behandleren socket, og mongrel2 (via zmq) vil automatisk laste-balansere forespørsler til dem.
Tilsvarende er det ingen eksplisitt støtte for omlasting når koden endres. Bare drepe den gamle behandleren og starte opp en ny. Hvis du bruker faste håndterer UUID da zmq vil sikre at overleveringen skjer grasiøst
Krav .
- Python
Begrensninger :
- Når kjører flere tråder, ikke ctrl-C ikke renslig avslutte prosessen. Virker som bakgrunns tråder bli sittende fast i en blokkering recv ().
- zmq lastbalansering algoritmen er grådig round-robin, som ikke er ideelt. For eksempel kan det planlegge flere raske forespørsler til den samme tråd som en langsom en, noe som gjør dem vente selv om andre tråder blir tilgjengelige. Jeg jobber med en zmq adapter som kan gjøre noe bedre.
Kommentarer ikke funnet