Dogslow

Software screenshot:
Dogslow
Software ətraflı:
Version: 0.9.5
Tarixi Upload: 14 Apr 15
Geliştirici: Erik van Zijst
Lisenziya: Pulsuz
Məşhurluq: 1

Rating: nan/5 (Total Votes: 0)

Dogslow yavaş sorğuların tracebacks açan Django təhlükəsizlik middleware sinif edir.
Quraşdırma:
Dogslow bərpa edin:
dogslow bərpa PIP
Sonra Django settings.py fayl middleware dərsləri siyahısına əgər əlavə edin:
MIDDLEWARE_CLASSES = (
& Nbsp; dogslow.WatchdogMiddleware,
& Nbsp; ...
)
En yaxşı nəticələr üçün, çalışır ilk middlewares biri olun.
Konfiqurasiya:
Siz tune nəzarət üçün settings.py fayl aşağıdakı konfiqurasiya xüsusiyyətləri istifadə edə bilərsiniz:
# Watchdog False müəyyən müvəqqəti aradan, default effektiv:
DOGSLOW = True
Watchdog onun log faylları saklar # Yer:
DOGSLOW_OUTPUT = '/ tmp'
Artıq 25 saniyə alaraq # Daxil sorğu:
DOGSLOW_TIMER = 25
# Həm müəyyən, e-poçt backtraces:
DOGSLOW_EMAIL_TO = 'errors@atlassian.com'
DOGSLOW_EMAIL_FROM = 'no-reply@atlassian.com'
istifadə:
Hər gələn HTTP request nəzarət 25 ikinci fasiləsi olur. Sorğu müddət ərzində geri deyil, təhlükəsizlik aktivləşdirən və sorğu mövzu nin yığını bir peek edir və (bütün yerli yığını dəyişənlərin daxil olmaqla - Django stil) backtrace yazır bir günlük faylı.
Hər yavaş sorğu bu kimi görünür ayrı bir fayl daxil edilir:
16-05-2011 02:10:12 UTC: Undead tələbi ilə ələ
GET http: // localhost: 8000 / gecikmə = 2
Mövzu ID: 140539485042432
Proses ID: 18010
Ana PID: 17762
Başladı: 16-05-2011 02:10:10 UTC
& Nbsp; File "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 107, inner_run da
& Nbsp; run (self.addr, int (self.port), handler, IPv6 = self.use_ipv6)
& Nbsp; Fayl "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 696, perspektivdə
& Nbsp; httpd.serve_forever ()
& Nbsp; serve_forever ilə, line 227 "/usr/lib/python2.7/SocketServer.py" Fayl
& Nbsp; self._handle_request_noblock ()
& Nbsp; _handle_request_noblock ilə, line 284 "/usr/lib/python2.7/SocketServer.py" Fayl
& Nbsp; self.process_request (tələb, client_address)
& Nbsp; process_request ilə, line 310 "/usr/lib/python2.7/SocketServer.py" Fayl
& Nbsp; self.finish_request (tələb, client_address)
& Nbsp; finish_request ilə, line 323 "/usr/lib/python2.7/SocketServer.py" Fayl
& Nbsp; self.RequestHandlerClass (tələb, client_address, özünü)
& Nbsp; Fayl "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 570, __init__ da
& Nbsp; BaseHTTPRequestHandler .__ init __ (self * args ** kwargs)
& Nbsp; __init__ ilə, line 639 "/usr/lib/python2.7/SocketServer.py" Fayl
& Nbsp; self.handle ()
& Nbsp; Fayl "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 615, qolu
& Nbsp; handler.run (self.server.get_app ())
& Nbsp; Fayl "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 283, perspektivdə
& Nbsp; self.result = ərizə (self.environ, self.start_response)
& Nbsp; Fayl "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 68, __call__ da
& Nbsp; qaytarılması self.application (ekoloji, start_response)
& Nbsp; Fayl "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 273, __call__ da
& Nbsp; cavab = self.get_response (sorğu)
& Nbsp; Fayl "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, get_response da
& Nbsp; cavab = callback (tələb * callback_args ** callback_kwargs)
& Nbsp; yuxu "/home/erik/work/middleware/middleware/sleep/views.py" xətti 6, Fayl
& Nbsp; time.sleep (float (request.GET.get (gecikmə, 1)))
Yerli dəyişənlərin ilə tam backtrace:
& Nbsp; File "/home/erik/work/virtualenv/bit/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 107, inner_run da
& Nbsp; run (self.addr, int (self.port), handler, IPv6 = self.use_ipv6)
& Nbsp; ... yük ətraflı ...
Yuxarıdakı misal sorğu mövzu öz snapshot etdi dogslow vaxt () time.sleep blok ki, göstərir.
Dogslow nin zaman aşımı əvvəl geri sorğu daxil deyil sona.
Ki, dogslow yalnız mövzu nin yığını bir peek edir unutmayın. Bu sorğu dayandırmaq və ya hər hansı digər şəkildə təsir etmir. Dogslow istifadə Buna görə də istehsal istifadə üçün təhlükəsizdir.
Caveats
Dogslow multithreading istifadə edir. Bu bir fon emal təhlükəsizlik zaman aşımları mövzu və orijinal istəyi mövzuları müdaxilə deyil ki, tracebacks edir. Bu, bəzi nəticələri var.
Multithreading və GIL
CPython ildə GIL (Global Interpreter Lock) eyni zamanda Python kodu icra birdən çox mövzuları qarşısını alır. Yalnız bir mövzu aydın edə bilərsiniz, ikinci mövzu run, GIL öz kilid açıqlamaları zaman.
GIL bir Python proqram IO edərkən, məsələn, tərcüməçi kənarda zənglərə blok edir zaman avtomatik olaraq edilir azad.
Dogslow üçün bu yalnız etibarlı onlar Kilidlər özləri əldə etmək üçün gözləyir IO edir yuxu zəng və ya məşğul çünki yavaş sorğu intercept bilər deməkdir.
Əksər hallarda bu yaxşıdır. Yavaş Django sorğuların mühüm səbəbi bahalı bazası sorğu edir. Bu IO olduğundan, dogslow o gözəl intercept bilər. Sorğunun mövzu heç Gil azad, Python kodu sonsuz loop edib (çox bahalı və ya qanuni Python və icra üçün uzun vaxt tələb edir) zaman CPython nin GIL problemli olan bir ssenari. Dogslow nin təhlükəsizlik timer runnable olmaq deyil baxmayaraq, yığını daxil edə bilməz.
Co-routines və Greenlets
Dogslow sinxron işçi konfiqurasiya istifadə üçün nəzərdə tutulub. Xüsusi mövzuları (və ya bir-yivli, xüsusi işçi prosesləri) istifadə edən bir web sorğu xidmət. Onun default sync işçi rejimində Gunicorn kimi Django daxili wsgi server, bu yoxdur.
Çox sorğu bir mövzu ilə eyni vaxtda xidmət edir "co-routines çərçivəsində" ilə çalışan zaman, backtraces cəfəng ola bilər

tələblər .

  • Python
  • Django

Geliştirici digər proqram Erik van Zijst

interruptingcow
interruptingcow

14 Apr 15

Şərh Dogslow

Şərhlər tapılmadı
Şərh əlavə
Images yandırın!