Dogslow

Programinė įranga Screenshot:
Dogslow
Programinė detalės:
Versija: 0.9.5
Įkėlimo datą: 14 Apr 15
Kūrėjas: Erik van Zijst
Licencija: Nemokamai
Populiarumas: 1

Rating: nan/5 (Total Votes: 0)

Dogslow yra Django sergėtojo tarpinės klasė, rąstų tracebacks lėtai prašymus.
Įrengimas:
Įdiekite dogslow:
PIP įdiegti dogslow
Tada pridėti, jei į savo sąrašą tarpinės klasių jūsų Django settings.py failą:
MIDDLEWARE_CLASSES = (
& Nbsp; "dogslow.WatchdogMiddleware"
& Nbsp; ...
)
Norėdami gauti geriausius rezultatus, kad jis vienas iš pirmųjų middlewares, kuri yra valdoma.
Sąranka:
Jūs galite naudoti šiuos konfigūravimo ypatybes jūsų settings.py failo melodija watchdog:
# Watchdog yra įjungta pagal nutylėjimą, laikinai išjungti, nustatykite Neteisingų:
DOGSLOW = True
# Vieta kur Watchdog saugo savo failus:
DOGSLOW_OUTPUT = '/ tmp "
# Prisijungti prašymai trunka ilgiau nei 25 sekundžių:
DOGSLOW_TIMER = 25
# Kai abu nurodyti, laiškus lūžimo pėdsakų:
DOGSLOW_EMAIL_TO = 'errors@atlassian.com "
DOGSLOW_EMAIL_FROM = 'no-reply@atlassian.com "
Naudojimas:
Kiekvienas įeinantis HTTP užklausa gauna 25 Antra timeout į sergėtojas. Jei prašymas negrąžina per tą laiką, "watchdog" įjungia ir trunka žvilgtelėti prašymo sriegis anketa kamino ir rašo pėdsako (įskaitant visus vietos kamino kintamųjų - Django stiliaus) į žurnalo failą.
Kiekvienas lėtai prašymas prisijungęs atskirame faile, kuris atrodo taip:
Undead prašymas sulaikytas adresu: 16-05-2011 02:10:12 UTC
GET http: // localhost: 8000 / vėlavimas = 2
Temos ID: 140539485042432
Apdoroti ID: 18010
Tėvų PID: 17762
Pradžia: 16-05-2011 02:10:10 UTC
& Nbsp; Failų "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/management/commands/runserver.py", linija 107 iš inner_run
& Nbsp; run (self.addr, int (self.port), prižiūrėtojas, IPv6 = self.use_ipv6)
& Nbsp; File "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/servers/basehttp.py", linija 696, run
& Nbsp; httpd.serve_forever ()
& Nbsp; File "/usr/lib/python2.7/SocketServer.py", linija 227 iš serve_forever
& Nbsp; self._handle_request_noblock ()
& Nbsp; File "/usr/lib/python2.7/SocketServer.py", linija 284 iš _handle_request_noblock
& Nbsp; self.process_request (prašymo, client_address)
& Nbsp; File "/usr/lib/python2.7/SocketServer.py", linija 310 iš process_request
& Nbsp; self.finish_request (prašymo, client_address)
& Nbsp; File "/usr/lib/python2.7/SocketServer.py", linija 323 iš finish_request
& Nbsp; self.RequestHandlerClass (prašymo, client_address, savarankiškai)
& Nbsp; File "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/servers/basehttp.py", linija 570 iš __init__
& Nbsp; BaseHTTPRequestHandler .__ init __ (self, * ARGS ** kwargs)
& Nbsp; File "/usr/lib/python2.7/SocketServer.py", linija 639 iš __init__
& Nbsp; self.handle ()
& Nbsp; File "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/servers/basehttp.py", linija 615, rankena
& Nbsp; handler.run (self.server.get_app ())
& Nbsp; File "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/servers/basehttp.py", linija 283, run
& Nbsp; self.result = taikymas (self.environ, self.start_response)
& Nbsp; File "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", linija 68, į __call__
& Nbsp; grąža self.application (aplin, start_response)
& Nbsp; File "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/handlers/wsgi.py", linija 273 iš __call__
& Nbsp; atsakas = self.get_response (prašymas)
& Nbsp; File "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/handlers/base.py", linija 111 iš get_response
& Nbsp; atsakas = atgalinių (prašymo, * callback_args ** callback_kwargs)
& Nbsp; File "/home/erik/work/middleware/middleware/sleep/views.py", 6 eilutės, miego
& Nbsp; time.sleep (float (request.GET.get ("vėlavimas", 1)))
Visas pėdsakas su vietos kintamieji:
& Nbsp; Failų "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/management/commands/runserver.py", linija 107 iš inner_run
& Nbsp; run (self.addr, int (self.port), prižiūrėtojas, IPv6 = self.use_ipv6)
& Nbsp; ... krovinius daugiau ...
Aukščiau pateiktame pavyzdyje matyti, kad prašymas sriegis buvo užblokuotas time.sleep () tuo metu, kai vyko dogslow savo fotografiją.
Prašo, kad grįžti iki dogslow anketa pauzės baigia galioti negauna k.
Atkreipkite dėmesį, kad dogslow trunka tik tuo sriegiu anketa kamino žvilgtelėti. Ji neturi pertraukti prašymą, arba jį įtakoti bet kokiu kitu būdu. Todėl naudojant dogslow yra saugus naudoti gamyboje.
Išlygos
Dogslow naudoja multiįvėrime. Jis turi vieną fonas sriegis rankenas watchdog laikus ir imasi tracebacks, kad pirminiame prašyme siūlai nenutrūktų. Tai turi keletą pasekmių.
Interfeiso ir Gil
Be cPython, Gil (Global Vertėja užraktas) neleidžia daug temų iš vykdančiosios Python kodą vienu metu. Tik tada, kai sriegis aiškiai išskiria savo užraktą apie GIL, gali antroji gija paleisti.
Atleidus Gil daroma automatiškai, kai Python programa daro blokuoti skambučius, nepriklausančius vertėjo, pavyzdžiui, kai darai IO.
Dėl dogslow tai reiškia, kad ji gali tik patikimai perimti prašymus, kurie yra lėtas, nes jie daro IO, tad miegoti, arba užimtas laukia įsigyti patys spynos.
Daugeliu atvejų tai yra gerai. Svarbu priežastis lėtai Django prašymų yra brangus duomenų bazės užklausos. Kadangi tai yra IO, dogslow gali perimti tų gerai. Scenarijus, kai cPython anketa Gil yra problemiškas, kai prašymas yra sriegis atsitrenkus į begalinis ciklas Python kodą (ar teisėtų Python, kuris yra labai brangus ir užima daug laiko atlikti), niekada atleidžiantis Gil. Nors dogslow anketa watchdog laikmatis neturi tapti Runnable, ji negali prisijungti prie kamino.
Bendradarbiai kasdienybe ir Greenlets
Dogslow yra skirtas naudoti sinchroninio darbuotojo konfigūracijos. Serveris kuris naudoja specialius temas (arba vieno sriegiu priskirtas darbuotojas procesus) tarnauti prašymus. Django įmontuota WSGI serveris tai daro, kaip daro Gunicorn savo numatytąjį sinchronizavimo darbuotojas režimu.
Važiuojant su "bendradarbiai kasdienybe sistemą", kur keli prašymai tarnavo kartu viena gija, lūžimo pėdsakų gali tapti absurdiškas

Reikalavimai :.

  • Python
  • Django

Kita programinė įranga kūrėjas Erik van Zijst

interruptingcow
interruptingcow

14 Apr 15

Komentarai Dogslow

Komentarai nerastas
Pridėti komentarą
Pasukite ant paveikslėlio!