рд╣реИрдмрд░рдкрд┐рдЯреЛрдирд░реНрд╕ рдХреЛ рдирдорд╕реНрдХрд╛рд░!
рд╕рдордп-рд╕рдордп рдкрд░ рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдкреИрдЯрд░реНрди рдЖрддреЗ рд╣реИрдВ рдЬреЛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓реЛрдХрдкреНрд░рд┐рдп рдПрдХреНрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдХрдИ рд▓реЛрдЧ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИред
рдЕрдм рдореИрдВ "рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╣реИрдВ" рдкреИрдЯрд░реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ Django рдХреЗ рд▓рд┐рдП рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХреАред рдореИрдВ рд╣рд░ рдмрд╛рд░ рдФрд░ рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдорд┐рд▓рд╛, рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдХ рд╣реА рдХрд╣рд╛рдиреА рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реИрдВ: рдПрдХ рдмрдбрд╝рд╛ рдХреЛрдб рдЖрдзрд╛рд░, рдЫреЛрдЯреЗ, рд╕реБрдВрджрд░ рдШрдЯрдХ рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЬреБрдбрд╝реЗ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдБ рдЖрдк рд╣реИрдВ: рд╕рднреА рдПрдХ рд╕рд╛рде рдордирдорд╛рдиреЗ рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдЬрд╛рджреВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдЧреИрд░-рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд┐рд░рд╛рдВрдХред
рддреЛ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдРрд╕рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдШреГрдгрд┐рдд рдХреНрдпреЛрдВ рд╣реИред
рдХреИрд╕реНрдХреЗрдбрд┐рдВрдЧ рдореБрджреНрджреЛрдВ
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдкрдХреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдХрдо рд╕реЗ рдХрдо рддреАрди рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рд╕реНрдерд╛рдиреАрдпрд╣реЛрд╕реНрдЯ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХрддрд░рдлрд╛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдпреБрджреНрдз рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдм рдХреБрдЫ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЖрдорддреМрд░ рдкрд░ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореЗрд▓ рдЦрд╛рддреА рд╣реИрдВ, рдФрд░ рдХреБрдЫ рдЕрд▓рдЧ рд╣реЛрддреА рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк MongoDB рдХреЛ рд╕рдВрдЧреНрд░рд╣рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдкрдХреЛ рдЗрд╕реЗ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░
my_project
рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░
my_project
рдирд╛рдордХ DB рдХрд╛ рдЙрдкрдпреЛрдЧ
my_project
ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпреВрдирд┐рдЯреЗрд╕реНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдбреАрдмреА рд▓реЗрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рддрд╛рдХрд┐ рд▓рдбрд╝рд╛рдХреВ рдбреЗрдЯрд╛ рдХреЛ рдиреБрдХрд╕рд╛рди рди
unittests
: рдЖрдЗрдП рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐
unittests
ред рдФрд░ рдЙрддреНрдкрд╛рджрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдореВрдВрдЧреВ рдХреЗ рддрд╣рдд рджрд┐рдП рдЧрдП рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдИрдкреА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рддреЛ рдмрд╛рд╣рд░реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ,
settings.MONGODB_ADDRESS
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗред
settings.MONGODB_ADDRESS
рд╕реЗ рдПрдордУрдВрдЧреЛрдбрдм_рдПрдбреАрдбреАрдЖрд░рдПрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рди рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП? рдЖрдорддреМрд░ рдкрд░, рдПрдХ рд╡реВрдбреВ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдВрдд рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ
__import__
,
__dict__
,
vars()
,
try/except ImportError
, рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рдкреВрд░рдХ рдФрд░ рдУрд╡рд░рд▓реИрдк рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ settings_local.pyред
рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпрд╛ рд╣реИ
_local.py
рд╣рд╛рд░реНрдбрдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреЗрд╡рд▓ рд▓реЙрдиреНрдЪ рдХреЗ рд╕рдордп рдЕрдкрдиреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдпреВрдирд┐рдЯреАрд╕реНрдЯ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЭрдВрдЭрд░реА рдХреЗ рд╕рд╛рде рдиреГрддреНрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЬрд╝реЗрди рдСрдл рдкрд╛рдпрдерди рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛: рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд╣рд┐рдд рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб
рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдкрд╛рдИ-рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рднрдВрдбрд╛рд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдбрд░рд╛рд╡рдирд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреВрд░реЗ рдкреИрдЯрд░реНрди, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рд╢реБрд░реВ рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рд╣реИ: тАЬрд╣рдореЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реАрдПрдлрдЬреА рдкрд╛рд░реНрд╕рд░реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ рдпрджрд┐ рдЖрдк рдЕрдЬрдЧрд░ рдкрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдФрд░ рдЕрдзрд┐рдХ рдЕрд╡рд╕рд░ рд╣реИрдВ! " рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдорд╛рдореВрд▓реА рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓, рд╕рдорд╛рдзрд╛рди рдмрдЧрд╝рд▓ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд╕реЗ рд╕реНрдирд┐рдкреЗрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рдХреНрдпрд╛ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ? рд╣рдордиреЗ
SOME_JOB_COMMAND
рдХреЗ рдХреБрд▓ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдбреНрд░рдо рдкрд░
PROJECT_HOSTNAME
рдорд╛рди рдмрд┐рд▓реНрдХреБрд▓ рдЕрд╡рд░реБрджреНрдз рдХрд░ рджрд┐рдпрд╛ред рд╣рдо рдУрд╡рд░рд▓реИрдк рдХреЗ рдмрд╛рдж
SOME_JOB_COMMAND
рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рджрд╛рдБрдд
SOME_JOB_COMMAND
рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ:
BASE_PATH
рдлрд┐рд░, рдПрдХ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВред рдЗрд╕реЗ рднреА рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ? рдХреНрдпрд╛ рдпрд╣ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рд╣реИ?
рдореИрдВ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдмрд╕ рдХрдард┐рди-рд╕реЗ-
ImportError
рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдПрдХ рдирдП рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдордХреНрдЦрд┐рдпреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХрдЯрд▓реЗрдЯ рдХреЛ рдЕрд▓рдЧ рд╕реЗ: рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореВрд▓ рдорд╛рди, рдкреА-рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред
рдЙрдЪреНрдЪ рдпреБрдЧреНрдорди
рдПрдХ рдЕрдЪреНрдЫреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд╣ рд╣реИ рдЬрд┐рд╕реЗ рдЫреЛрдЯреЗ рдХреНрдпреВрдмреНрд╕ рдореЗрдВ рддреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреНрдпреВрдм рдХреЛ рдПрдХ рдкреВрд░реНрдг-рдУрдкрди рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреАрдердм рдкрд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬрдм рд╕рдм рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ BUT рдХреЗ рд╕рд╛рде: "рдХреГрдкрдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрдбрд╝ рдореЗрдВ
FOO_BAZ
рдФрд░
FOO_QUX
рд╕реЗрдЯрд┐рдВрдЧ
FOO_BAR
,
FOO_BAZ
рдФрд░
FOO_QUX
" рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд▓рдЧрддрд╛ рд╣реИ, рд╣реИ рдирд╛? рдФрд░ рдЬрдм рдХреБрдЫ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдпрд╣ рдмреЗрддреБрдХрд╛рдкрди рдЖрддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЦреБрдж рдХреЛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ VKontakte API рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕
VKontakteProfileCache
рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реИ, рдЬреЛ
settings.VK_API_KEY
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
VKontakteProfileCache
рдФрд░
settings.VK_API_SECRET
ред рдорд╛рдереЗ рдореЗрдВ VK_API_SECRETред рдЦреИрд░, рд╡рд╣ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдлрд┐рд░ рд╕реЗ, рдФрд░ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдХрдИ VKontakte рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рддреБрд░рдВрдд рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдпрд╣ рд╡рд╣ рд╣реИ,
VKontakteProfileCache
рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЬреЛрдбрд╝реА рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗред
рдЗрд╕рд▓рд┐рдП, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реАрдзреЗ рдПрдХреНрд╕реЗрд╕ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХ рд╕рд╛рдордВрдЬрд╕реНрдпрдкреВрд░реНрдг рдФрд░ рдЕрдзрд┐рдХ рд╕рдореАрдЪреАрди рд╣реИред рд╕рднреА рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рджреЗрдВ, рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реАрдзреЗ рдирд╣реАрдВред рдФрд░ рдХреЛрдб рдХреА рддрд░рд╣ рд╕рдмрд╕реЗ рдирд┐рдореНрдирддрдо рд╕реНрддрд░ рджреЗрдВ
if __name__ == '__main__'
рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред рдФрд░ рд╡рд╣ рдЙрдиреНрд╣реЗрдВ рдХрд╣рд╛рдВ рд╕реЗ рдорд┐рд▓рд╛ - рдЙрдирдХреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдорд╕реНрдпрд╛рдПрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХреЛ рднреА рдмрд╣реБрдд рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЖрдкрдХреЛ рдХрд┐рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╣рдо рдмрдирд╛рддреЗ рд╣реИрдВред
рд╕рдВрднрд╡ рд╕рдорд╛рдзрд╛рди
рдЗрд╕рд▓рд┐рдП, "settings.py" рдкреИрдЯрд░реНрди рдореИрдВрдиреЗ рдХреАрдЪрдбрд╝ рдбрд╛рд▓рд╛ред рдореИрдВ рдмреЗрд╣рддрд░ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВ, рдзрдиреНрдпрд╡рд╛рджред рдЕрдм рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдореИрдВрдиреЗ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╕реВрдЪреАрдмрджреНрдз рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рд░рд╣рд┐рдд рдкрд╛рдпрд╛ред
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдЖрдИ-рд╕реНрдЯрд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░рдУрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: рдЗрд╕рдореЗрдВ рдорд╛рдирдХ рд╡рд┐рдиреНрдпрд╛рд╕рдХрд░реНрддрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдореГрджреНрдз рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реНрдХреЗрдб рдмрдирд╛рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╣рдо рд╕рднреА рд╕рдВрднрд╡ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдПрдХ рдЙрдЪрд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд╕рд╛рде рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдзрд╛рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓
default_settings.cfg
рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо config_from_files
configure_from_files()
, config_for_unittests
configure_from_files()
рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд╛рде utils.config рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред
/etc/my-project.cfg
configure_from_files()
рдПрдХ рдХреИрд╕реНрдХреЗрдбрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдЦреЛрдЬ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░рддрд╛ рд╣реИ:
default_settings.cfg
,
~/.my-project.cfg
,
/etc/my-project.cfg
рдФрд░ рд╢рд╛рдпрдж рдХрд╣реАрдВ рдФрд░ред рдпрд╣ рд╕рдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдЕрдВрддрд┐рдо рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдпрд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреИрдпрд╛рд░ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рд╡реЗ рд╕реАрдзреЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЕрдВрдзреЗрд░реЗ рдХреЛ рд╕рдордЧреНрд░ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЛ рдирдХрд╛рд░рддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ
рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
рд╣реИ - рдЖрдордиреЗ-рд╕рд╛рдордиреЗ рд╕рдВрдкрд░реНрдХ рдирд╣реАрдВред
рд╢рд╛рдпрдж рдореИрдВрдиреЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ "рдЯреНрд░рд┐рдлрд╝рд▓" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рд┐рдЦрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдХрдо рд╕реЗ рдХрдо рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рджреВрд░ рд╕реЗ рдХреЙрдкреА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЛрдЪрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдмреЗрд╣рддрд░, рдЖрд╕рд╛рди, рдЕрдзрд┐рдХ рдордЬреЗрджрд╛рд░ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рдорд┐рд╢рди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ред