Найти - Пользователи
Полная версия: Сервис отдельный от Django
Начало » Django » Сервис отдельный от Django
1
hound
Добрый день, есть приложение на Django: модели, приложения, модули со своими функциями (которые используют модели джанго приложения).

Есть потребность в создании отдельного сервиса работать он должен по сути отдельно от сайта на дженго. Сервис этот должен использовать функции из модулей приложения джанги (там будет работа с записями в базе денных).
Для удобства этот сервис планировал разместить в папке с одним из приложений джанго, но запуске этого сервиса вываливается ошибка:
django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

Если сделать запуск через manage.py, то ошибка пропадает, но это мне кажется слишком избыточным, в частности из-за определения класса class Command(BaseCommand).
Какие варианты можете подсказать и как лучше реализовать подобный сервис в данном случае?
Заранее благодарен за ответ.
FishHook
Работа всех частей джанго завязана на импорт настроек из settings.py. Если вы посмотрите внутрь wsgi.py, то по сути всё что там есть это
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
то есть мы устанавливаем системную переменную, в которую кладём путь к settings.py, и создаём новый экземпляр wsgi_application. А дальше там происходит куча магии: импортируются приложения, миддлвари, модели, строится весь каркас ОРМ, создаются сигналы и прочее. Без комплекса этих мероприятий джанга и её отдельные части работать не смогут. Когда вы запускаете команду через manage.py вся эта хрень выполняется точно так же, как если бы вы запускали wsgi-приложение. Ваши движения по определению класса Command, не то что не избыточны, это маленькая вершина той работы, которая проходит незаметно для вас. Вы можете попробовать инстанциировать джангу каким-то своим путём, но вы наверняка придёте к тому, что создать кастомную management-команду самый оптимальный вариант.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB