Ну и вдогонку:
— подставление параметров в запрос с помощью питоновских плейсхолдеров (ADD_NEW_POINT%(sPointName,nHour)) вместо использования prepared statement — плохая идея, очень плохая.
— использование old-style classes сильно смущает
— весь код настолько unpythonic, что про pep-8 я лучше помолчу
P.S. Ну и в самом деле, почему в роли оправдывающихся находятся люди, предполагающие, что предложение автора не дает никакого профита? Пускай автор доказывает свою точку зрения и предлагает элегантные решения данных use case'ов
Угу… А если у нас SOME_JOB_COMMAND переопределён в settings_local? Или принять эту переменную, как железно вычисляемую, без возможности переопределения алгоритма вычисления?
Ну так автор же и предлагает захардкодить алгоритм вычисляемых параметров в исполняемый код, а в конфигах оставить только базовые параметры. Разве нет? Ну если уж вас так беспокоит эта проблема, то ее можно решить так:
# settings.py
BASE_PATH = os.path.dirname(__file__)
PROJECT_HOSTNAME = 'localhost'
try:
from settings_local import *
except ImportError:
pass
if 'SOME_JOB_COMMAND' not in locals():
SOME_JOB_COMMAND = '%s/bin/do_job.py -H %s' % (BASE_PATH, PROJECT_HOSTNAME)
В данном случае автор сетовал именно на отсутствие BASE_PATH. По поводу вычисления SOME_JOB_COMMAND на основании переопределенных параметров посмотрите на первый кусок кода в моем комментарии выше.
Понимаете в чём проблема? То, что мы перекрыли значение PROJECT_HOSTNAME абсолютно по барабану для итогового значения SOME_JOB_COMMAND.
В предложенном вами способе SOME_JOB_COMMAND все равно останется в выполняемом коде и поэтому данную константу невозможно будет переопределить. В таком случае, если условиться, что SOME_JOB_COMMAND не подлежит переопределению, то данная проблема легко решается в рамках settings.py:
— подставление параметров в запрос с помощью питоновских плейсхолдеров (ADD_NEW_POINT%(sPointName,nHour)) вместо использования prepared statement — плохая идея, очень плохая.
— использование old-style classes сильно смущает
— весь код настолько unpythonic, что про pep-8 я лучше помолчу
А можно пруфлинк с описанием поддержки федорой pv-режима?
Вы бы могли привести примеры?
Чем невнятен ImportError?
заменить на
Вас это устроит?
P.S. Ну и в самом деле, почему в роли оправдывающихся находятся люди, предполагающие, что предложение автора не дает никакого профита? Пускай автор доказывает свою точку зрения и предлагает элегантные решения данных use case'ов
Чем строка на питоне:
PROJECT_HOSTNAME = 'localhost'
отличается от аналогичной в ini-файле?
Ну так автор же и предлагает захардкодить алгоритм вычисляемых параметров в исполняемый код, а в конфигах оставить только базовые параметры. Разве нет? Ну если уж вас так беспокоит эта проблема, то ее можно решить так:
Это я понял. Я не понимаю в чем профит от переноса базовых параметров в текстовые файлы.
В предложенном вами способе SOME_JOB_COMMAND все равно останется в выполняемом коде и поэтому данную константу невозможно будет переопределить. В таком случае, если условиться, что SOME_JOB_COMMAND не подлежит переопределению, то данная проблема легко решается в рамках settings.py: