рдЕрдиреБрд╡рд╛рджрдХ рдиреЛрдЯ:
рдЪреБрдкрдЪрд╛рдк рдФрд░ рдЪреБрдкрдЪрд╛рдк рдкрд┐рдиреНрдмрд╛ рдмрд╛рд╣рд░ рдЖ рдЧрдИред рдпрд╣ рдЕрдЬреАрдм рдмрд╛рдд рд╣реИ рдХрд┐ рдЕрднреА рднреА рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ :)
рдпрд╣ рдХреНрдпрд╛ рд╣реИ:
Pynba WSGI
рдкрд┐рдирдмрд╛ рдкрд░рдд рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде, рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП MySQL рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдВрдХрдбрд╝реЗ рдПрдХрддреНрд░ / рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдкрд╛рдпрдерди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдбреЗрдЯрд╛ рдЬрдорд╛ рдХрд░рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдпреВрдбреАрдкреА рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдзрд╛рд░рдг рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд╕реБрдВрджрд░ рдорд╛рдирд╡-рдкрдардиреАрдп рд░реВрдк рдореЗрдВ рдЖрдВрдХрдбрд╝реЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдпрд╣ рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рддрдХ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд░реНрдЧреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рднреА рдорд╛рдк рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдФрд░ рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рд╣реИрдВрдбрд▓рд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ?
рдХреНрдпреЛрдВрдХрд┐ рдкрд┐рдирдмрд╛ рдорд╕реНрдд рд╣реИ!
IsCool Entertainment рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ PHP рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП Pinba рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ
рдкрд┐рдирдмрд╛ ,
рдкреНрд░реЛрддреЛрдмреБрдлрд╝ рдФрд░
рд╡рд┐рд░реНрдХреЗрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдпрдВ
рд╕реЗрдЯрдкреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
рд╣реЛрддреА рд╣реИ ред
рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
рд╕рдорд╛рдпреЛрдЬрди
рдпрджрд┐ рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдХрд░реЗрдВ:
$ pip install iscool_e.pynba
рдпрджрд┐ рдЖрдк рд╡рд░реНрддрдорд╛рди (рд╡рд┐рдХрд╛рд╕) рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ
$ git clone https://github.com/IsCoolEntertainment/pynba.git $ python setup.py install
рдХреЗ рдЙрдкрдпреЛрдЧ
рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдкрдХрд╛ рдореБрдЦреНрдп WSGI рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╣рд╛рдВ рд╣реИ:
def app(environ, start_response): ...
Pynba рдбреЗрдХреЛрд░реЗрдЯрд░ рдЖрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдореБрдЦреНрдп WSGI рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд╕рдЬрд╛рдПрдВред
from iscool_e.pynba import monitor @monitor(('127.0.0.1', 30002)) def app(environ, start_response): ...
рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдкрдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдПрдХ рдпреВрдбреАрдкреА рд╕реНрдЯреНрд░реАрдо рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдВрддрддрдГ, рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ pynba рдкреНрд░реЙрдХреНрд╕реА рдЖрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирдИ рдЯрд╛рдЗрдорд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВ:
from iscool_e.pynba import pynba timer = pynba.timer(foo="bar") timer.start() ... timer.stop()
PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реЗ рдЕрдВрддрд░
рднреЗрдЬреЗ рдЧрдП рдбреЗрдЯрд╛ рдореЗрдВ:
рдЯрд╛рдЗрдорд░ рдореЗрдВ:
- рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдХрдИ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдмрд╕ рдХрд┐рд╕реА рднреА рдЕрдиреБрдХреНрд░рдо, рдорд╛рдирдЪрд┐рддреНрд░рдг рдпрд╛ рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдпрд╣ рдЙрджрд╛рд╣рд░рдг:
pynba.timer(foo='bar', baz=['seq1', 'seq2'], qux={'map1': 'val1'})
рдкрд┐рдирдмрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рддреАрди рд▓реЗрдмрд▓ рдХреЗ рд▓рд┐рдП 4 рдорд╛рди рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛:
('foo', 'bar'), ('baz', 'seq1'), ('baz', 'seq2'), ('qux.map1', 'val1')
рд▓рд╛рдЗрд╕реЗрдВрд╕
рдкреИрдХреЗрдЬ рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛
LICENSE рдкрдврд╝реЗрдВред