рдореИрдВрдиреЗ рдЯреЛрд╕реНрдЯрд┐рдкреА рдкреИрдХреЗрдЬ рдХреЛ рдкреЛрдиреА рдУрдЖрд░рдПрдо рдкрд░ рдХреИрд╕реЗ рдШрд╕реАрдЯрд╛ рдФрд░ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рд╣реБрдЖред
рдпрд╣ рд▓реЗрдЦ рдЕрдЬрдЧрд░ рдФрд░ django рдореЗрдВ рдЖрд╡реЗрджрди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╕рдВрдШрд░реНрд╖ рдХреА рдХрд╣рд╛рдиреА рдХреЛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред
рдкрд┐рдЫрд▓реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢:
-
рдУрдЖрд░рдПрдо рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ , рдФрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ - 3-5 рдЧреБрдирд╛ рдпрд╛ рдЕрдзрд┐рдХ
-
рдФрд░ рдпрд╣рд╛рдБ Django ORM рдХреЗ рд▓рд┐рдП
рдПрдХ рдбрдореА рд╣реИ-
рд╡рд╛рд╣, рдпрд╣ рдУрдЖрд░рдПрдо рд╢рд╛рдпрдж рд╣реА рдзреАрдорд╛ рд╣реЛ рдФрд░ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреИрд╢ред
-
рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк Django рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ
рд▓рд┐рдП рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди Pony ORM рдХреЛ
рдХреИрд╕реЗ рддреЗрдЬ
рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд░рдореБрдЦ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдкрд░рд┐рдЪрдп
рдкреЛрдиреА рдУрдЖрд░рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдбреАрдмреАрдПрдордПрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЧрддрд┐ рдкрд░ рдХрд╛рдлреА рд╕рдВрддреЛрд╖рдЬрдирдХ (Django ORM рдХреА рддреБрд▓рдирд╛ рдореЗрдВ) рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдпрд╣ рд╕реЛрдЪрдиреЗ рд▓рдЧрд╛ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
Django рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЛ Pony рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдкрд░ рдореИрдк рдХрд┐рдпрд╛ ред рдЕрдм, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рддреИрдпрд╛рд░ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬрд╣рд╛рдВ рдХреЛрдб рдХреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, Django рдХреЗ рдмрдЬрд╛рдп рдЯрдЯреНрдЯреВ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: рд╕рднреА Django рдореЙрдбрд▓ рдкрд░ `p` рд╡рд┐рд╢реЗрд╖рддрд╛ рдЕрдм Pony рдореЙрдбрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ - рдЙрди рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Django ORM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЙрддреНрддрд░ рд╣реИ: рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдпрд╛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛, рдЪреВрдВрдХрд┐ рдкреЛрдиреА рдУрдЖрд░рдПрдо рдореЗрдВ рдореЙрдбрд▓ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рд╢рдмреНрджрд╛рд░реНрде рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ Django ORM рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ - рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рдкреЛрдиреА рдУрдЖрд░рдПрдо рдХреА рдЕрдкреАрд▓ рдХреЛ рдорд╛рд╕реНрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ Django ORM рддрдХ рдкрд╣реБрдВрдЪрдирд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рднреЗрд╕, рдЬрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рдд рдкрд░ рдиреБрдХрд╕рд╛рди рдХреЗ рдХрд╛рд░рдг рдкреЛрдиреА рдУрдЖрд░рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рднреА рдлрд╛рдпрджреЗ рдорд╛рд░реЗ рдЬрд╛рдПрдВрдЧреЗред рдлрд┐рд░ рднреА, рдЕрдЬрдЧрд░ рдПрдХ рджреБрднрд╛рд╖рд┐рдпрд╛ рд╣реИ, рдФрд░ рдиреБрдХрд╕рд╛рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдкрд░ DBMS рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдЦрд┐рд▓рд╛рдл рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдпрд╣ рджреВрд╕рд░реЛрдВ рдХреЗ рдмреАрдЪ рдРрд╕рд╛ рдиреБрдХрд╕рд╛рди рд╣реИ, рдЬреЛ рд╢рд╛рдпрдж Django ORM рдФрд░ SQLAlchemy рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рд░рддрд╛ рд╣реИред
рд╣рдо HTTP рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрдкреВрд░реНрдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдпрд╛ рдЗрд╕рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢) рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рдореБрдЦ рддрддреНрд╡ рдПрдкреАрдЖрдИ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо
рдЯреИрд╕реНрдЯрд┐рдкреА рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рдиреЗ рд╕реЗ рд╕реАрдзреЗ рдЖрд╡реЗрджрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рд╛рдЗрдЯ рдкрд░ рд╕рдордЧреНрд░ рднрд╛рд░ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдФрд░ рдореИрдВрдиреЗ
рддрд╕реНрд╕рдкреЗрдИ рдХреЛ рд▓рд┐рдпрд╛ ред
рдХреИрд╕реЗ Tastypie рд╕рдВрд░рдЪрдирд╛ рдиреЗ рдореЗрд░реА рдорджрдж рдХреА
Tastypie рдкреБрд╕реНрддрдХрд╛рд▓рдп, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ Django рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдЕрдореВрд░реНрдд (рд╕рдВрд╕рд╛рдзрди) рдХреА рдПрдХ рдкрд░рдд рд╣реИ, рдЬреЛ Django ORM рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред рдХреЗрд╡рд▓ рдЕрдЧрд▓реЗ рд╡рдВрд╢рдЬ, ModelResource, Django ORM- рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реА рдорд╛рди рд▓рд┐рдпрд╛ рдерд╛, рдореБрдЭреЗ рдХреЗрд╡рд▓ рд╕рдВрд╕рд╛рдзрди рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрдиреЗ рдФрд░ ModelResource рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдореБрдЭреЗ ToManyField рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдПрдХ рдХрдХреНрд╖рд╛ рднреА рдмрдирд╛рдиреА рдкрдбрд╝реА, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реА рдирд┐рд░рд╛рд╢рд╛ рдХреЗ рдХрд╛рд░рдг, рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Django ORM рдХреЗ рд▓рд┐рдП рдЙрдиреНрдореБрдЦ рдХреБрдЫ рд▓рд╛рдЗрдиреЗрдВ рдирд┐рдХрд▓реАрдВред рдореИрдВрдиреЗ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреЛ рд╕реЗрдЯрдлрд┐рд▓реНрдб рдХрд╣рд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реЗрдЯ рдХреНрд▓рд╛рд╕ рд╣реИ рдЬреЛ рдПрдХ-рд╕реЗ-рдХрдИ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрдиреА рдУрдЖрд░рдПрдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред
рдХреНрдпрд╛ рд╣реБрдЖ?
рд╕рдм рдХреБрдЫ рдареАрдХ рдирд┐рдХрд▓рд╛ред рдирдореВрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ django.contrib.auth рд╕реЗ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЗрд╕реЗ рд▓рдЧрднрдЧ 1000 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рднрд░ рджрд┐рдпрд╛ред рдореИрдВрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ 159 рдЕрдзрд┐рдХрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рджрд┐рдП рд╣реИрдВ (рд╣рдордиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд - рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдЪрд┐рдд рдХрд┐рдпрд╛ рд╣реИ) рдФрд░ рдЗрд╕ рдХреЙрд▓ рдХреЛ рдПрдХ рдирдореВрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ред
рдпрд╣рд╛рдБ рдкреБрд░рд╛рдиреЗ API v2 рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдЬреЛ Django ORM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рд╡рд╣ рджреЗрдЦрд╛ рдЧрдпрд╛ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ - рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП)ред
class PermissionResource(ModelResource): class Meta: queryset = auth_models.Permission.objects.all() object_model = queryset.model filtering = dict([(n,ALL_WITH_RELATIONS) for n in object_model._meta.get_all_field_names()]) resource_name = 'auth/permission' class UserResource(ModelResource): user_permissions = ToManyField(PermissionResource,'user_permissions',related_name='user_set',null=True) class Meta: queryset = auth_models.User.objects.all() object_model = queryset.model filtering = dict([(n,ALL_WITH_RELATIONS) for n in object_model._meta.get_all_field_names()]) resource_name = 'auth/user'
рдЦреИрд░, рдпрд╣рд╛рдБ рдирдИ v3 рдПрдкреАрдЖрдИ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ, рдЬреЛ рдкреЛрдиреА рдУрдЖрд░рдПрдо рдХреЛ рдЬрд┐рдУрдиреА рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрдореБрдЦ рд╣реИ:
class PermissionResource(DjonyResource): class Meta: object_model = auth_models.Permission filtering = dict([(n,ALL_WITH_RELATIONS) for n in object_model._meta.get_all_field_names()]) resource_name = 'auth/permission' class UserResource(DjonyResource): user_permissions = SetField(PermissionResource,'user_permissions',related_name='user_set',null=True) class Meta: object_model = auth_models.User filtering = dict([(n,ALL_WITH_RELATIONS) for n in object_model._meta.get_all_field_names()]) resource_name = 'auth/user'
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкрд░рд┐рднрд╛рд╖рд╛ Django рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рди рдХрд┐ рдкреЛрдиреА рдореЙрдбрд▓ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкреЛрдиреА рдореЙрдбрд▓ рдореЗрдВ Django ORM рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ help_textред рдРрд╕реЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЪрд░реНрдЪрд╛ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред
рд╕рд░реНрд╡рд░ рдХреЛ рдореЗрд░реЗ рдорд╛рдореВрд▓реА рдХрд╛рдо рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ 2.2 рдЧреАрдЧрд╛рд╣рд░реНрдЯреНрдЬрд╝ рдкрд░ 2 рдХреЛрд░ рдФрд░ 3 рдЬреАрдмреА рд░реИрдо рдерд╛ред рдкрд░реАрдХреНрд╖рдг рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЙрд╕реА рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдВрддрд┐рдо рдЙрдкрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдм рдкреИрдХреЗрдЬ (рдЕрдкрд╛рдЪреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ) рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
seva@SEVA (2):~/djony$ ab -n 100 -c 4 "http://localhost:8080/api/v2/auth/user/3/?format=json" This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient).....done Server Software: nginx/1.1.19 Server Hostname: localhost Server Port: 8080 Document Path: /api/v2/auth/user/3/?format=json Document Length: 5467 bytes Concurrency Level: 4 Time taken for tests: 17.331 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 582900 bytes HTML transferred: 546700 bytes Requests per second: 5.77 [#/sec] (mean) Time per request: 693.256 [ms] (mean) Time per request: 173.314 [ms] (mean, across all concurrent requests) Transfer rate: 32.84 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 1.5 0 9 Processing: 313 685 486.1 575 3357 Waiting: 312 684 485.8 574 3355 Total: 313 685 486.7 575 3357 Percentage of the requests served within a certain time (ms) 50% 575 66% 618 75% 647 80% 670 90% 819 95% 1320 98% 2797 99% 3357 100% 3357 (longest request) seva@SEVA (2):~/djony$ ab -n 100 -c 4 "http://localhost:8080/api/v3/auth/user/3/?format=json" This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient).....done Server Software: nginx/1.1.19 Server Hostname: localhost Server Port: 8080 Document Path: /api/v3/auth/user/3/?format=json Document Length: 5467 bytes Concurrency Level: 4 Time taken for tests: 8.339 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 582900 bytes HTML transferred: 546700 bytes Requests per second: 11.99 [#/sec] (mean) Time per request: 333.557 [ms] (mean) Time per request: 83.389 [ms] (mean, across all concurrent requests) Transfer rate: 68.26 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 0 Processing: 137 317 375.9 243 2753 Waiting: 137 316 375.7 243 2751 Total: 137 317 375.9 243 2753 Percentage of the requests served within a certain time (ms) 50% 243 66% 264 75% 282 80% 299 90% 351 95% 433 98% 2670 99% 2753 100% 2753 (longest request)
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рдкреЛрдиреА рдУрдЖрд░рдПрдо рдХреЗ рдЙрдкрдпреЛрдЧ рдиреЗ рдПрдкреАрдЖрдИ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ 2 рдЧреБрдирд╛ рдХреА рд╡реГрджреНрдзрд┐ рджреАред
рджреВрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣рд╛рдБ рдкреНрд░рджрд░реНрд╢рди рд╡реГрджреНрдзрд┐ рдФрд░ рднреА рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ:
seva@SEVA (2):~/djony$ ab -n 20 -c 4 "http://localhost:8080/api/v2/auth/user/?format=json&limit=0" This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient).....done Server Software: nginx/1.1.19 Server Hostname: localhost Server Port: 8080 Document Path: /api/v2/auth/user/?format=json&limit=0 Document Length: 306326 bytes Concurrency Level: 4 Time taken for tests: 40.891 seconds Complete requests: 20 Failed requests: 0 Write errors: 0 Total transferred: 6133760 bytes HTML transferred: 6126520 bytes Requests per second: 0.49 [#/sec] (mean) Time per request: 8178.157 [ms] (mean) Time per request: 2044.539 [ms] (mean, across all concurrent requests) Transfer rate: 146.49 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 0 Processing: 6235 7976 1035.4 7980 10671 Waiting: 6225 7959 1033.0 7958 10654 Total: 6235 7976 1035.4 7980 10671 Percentage of the requests served within a certain time (ms) 50% 7980 66% 8177 75% 8287 80% 8390 90% 10001 95% 10671 98% 10671 99% 10671 100% 10671 (longest request) seva@SEVA (2):~/djony$ ab -n 20 -c 4 "http://localhost:8080/api/v3/auth/user/?format=json&limit=0" This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient).....done Server Software: nginx/1.1.19 Server Hostname: localhost Server Port: 8080 Document Path: /api/v3/auth/user/?format=json&limit=0 Document Length: 306326 bytes Concurrency Level: 4 Time taken for tests: 11.841 seconds Complete requests: 20 Failed requests: 0 Write errors: 0 Total transferred: 6133760 bytes HTML transferred: 6126520 bytes Requests per second: 1.69 [#/sec] (mean) Time per request: 2368.136 [ms] (mean) Time per request: 592.034 [ms] (mean, across all concurrent requests) Transfer rate: 505.88 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 0 Processing: 1024 2269 806.2 2227 4492 Waiting: 1017 2252 803.6 2211 4472 Total: 1024 2269 806.2 2227 4492 Percentage of the requests served within a certain time (ms) 50% 2227 66% 2336 75% 2395 80% 2406 90% 4140 95% 4492 98% 4492 99% 4492 100% 4492 (longest request)
рдПрдкреАрдЖрдИ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ 4 рдЧреБрдирд╛ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИ!
рдЬреЛ рд╣реЛрдирд╛ рдмрд╛рдХреА рд╣реИ
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рджрд┐рдЦрддреА рд╣реИред
рд░реЗрдЧреЗрдХреНрд╕, рд╕рдкреНрддрд╛рд╣_рджрд┐рди рдФрд░ рдЦреЛрдЬ рдЬреИрд╕реЗ рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреЛрдиреА рдУрдЖрд░рдПрдо рдореЗрдВ рдЕрднреА рддрдХ рд╕рдорд╛рди рдорд╛рдирджрдВрдб рдирд╣реАрдВ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
Django ORM рдХреЗ рд▓рд┐рдП Django рддреИрдпрд╛рд░-рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреЛрдиреА рдУрдЖрд░рдПрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдВрднрд╡ рдФрд░ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред рдкреИрдХреЗрдЬ рдХреЗ рдЕрдВрджрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЕрдЪреНрдЫрд╛ рдЕрдореВрд░реНрдд рдмрд╣реБрдд рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, Django ORM рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдПрдХ рдкрд░рдд рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ред
рдореИрдВ рдЙрди рд╕рднреА рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЦреБрд▓реЗ
рдбреАрдЬреЗрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ
(рдХреНрд░реЙрд╕рд┐рдВрдЧ рдкреЛрдиреА рдФрд░ Django рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ) рдФрд░
tastypie_djony (Pony ORM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Tastypie рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рд╕реНрдерд╛рдпреА рдФрджреНрдпреЛрдЧрд┐рдХ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ Django рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
рдкреЛрдиреА рдУрдЖрд░рдПрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред
рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдкреЛрдиреА рдУрдЖрд░рдПрдо рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрднреА рднреА рд╣реИрдмрд░рд╣реИрдм рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ:
рдПрд▓реЗрдХреНрд╕реАрдорд▓реИрд╢рдХреЗрд╡рд┐рдЪ m.alexey@gmail.com
metaprogrammer alexander.kozlovsky@gmail.com