m2wsgi egy Python modult, amely a WSGI átjáró kezelőjének Mongrel2 web szerver, amely könnyű telepítését Python alkalmazásokat Mongrel2. & Nbsp; Esetleg ezek is megtalálja a támogató osztályok hasznos fejlődő non-WSGI rakodók Pythonban.
Command-line használatra
A legegyszerűbb módja, hogy használja ezt a csomagot, mint egy parancssori launcher:
python -m m2wsgi dotted.app.name tcp: //127.0.0.1: 9999
Ez fog kapcsolódni Mongrel2 a megadott kérésére port, és indítsa kérésekre halad őket a megadott WSGI app. Alapértelmezésben kapsz egy szálat kezelő valamennyi kérelmét; növeli a szálak száma, például így:
python -m m2wsgi --num-menet = 5 dotted.app.name tcp: //127.0.0.1: 9999
Vagy ha menet nem a dolog, akkor eventlet a shuffle a bitek körül, például így:
python -m m2wsgi --io = eventlet dotted.app.name tcp: //127.0.0.1: 9999
Érdekelne hozzá támogatás más IO modulok, mint a gevent; hozzájárulások szívesen.
Automatizált Használat
Ha bonyolultabb igényeit, akkor m2wsgi belül az alkalmazás. A fő osztály "WSGIHandler", amely egy egyszerű szerver interfész. Egyenértékű a fent parancssori használat:
a m2wsgi.base import WSGIHandler
handler = WSGIHandler (my_wsgi_app, "tcp: //127.0.0.1: 9999")
handler.serve ()
Finomabb felett a kapcsolatot a felvezető és Mongrel2 létre saját Connection objektum:
a m2wsgi.base import WSGIHandler, Connection
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")
handler = WSGIHandler (my_wsgi_app, Conn)
handler.serve ()
Ne már van egy ilyen?
Több valóban:
& Nbsp; * https://github.com/berry/Mongrel2-WSGI-Handler
& Nbsp; * https://bitbucket.org/dholth/mongrel2_wsgi
Egyikük sem teljes mértékben megfelelt az igényeimnek. Különösen ez a csomag transzparens támogatást:
& Nbsp; * chunked választ kódolás
& Nbsp; * "aszinkron feltöltés" nagy kérésére szervek
& Nbsp; * dugaszolható IO backends (pl eventlet, gevent)
Emellett úgy van kialakítva, az alapoktól kezdve kifejezetten Mongrel2. Ez azt jelenti, hogy kap egy csomó funkcióval ingyen, és a kód egyszerűbb és világosabb a.
Például nincs explicit kezelése a threadpool és kérésre sorba, mint lehet találni pl A Cherrypy szerveren. Ehelyett egyszerűen csak elkezd annyi szál, amennyire szüksége van, mindet csatlakozhat ugyanahhoz a felvezető aljzat, és mongrel2 (via zmq) automatikusan betölti a mérlegen a kéréseket őket.
Hasonlóképpen, nincs kifejezett támogatására újratöltése, ha a kód megváltozik. Csak öld meg a régi felvezető és elkezd egy újat. Ha használja fix handler UUID majd zmq biztosítani fogja, hogy az átadás megtörténik kecsesen.
követelmények :
- Python
korlátai :
- Ha fut több szálon, ctrl-C nem tisztán kilép a folyamatot. Úgy tűnik, a háttérben futó szálakat elakad a blokkoló recv ().
- A zmq terhelésmegosztásra algoritmus mohó round-robin, ami nem ideális. Például, ütemezheti több gyorsan kéréseket a szál azonos, mint olyan lassan, így várni még ha más szálak válnak elérhetővé. Dolgozom egy zmq adapter, hogy tehet valamit jobban.
Hozzászólás nem található