Найти - Пользователи
Полная версия: Использование models и API Django без управления manage.py
Начало » Django » Использование models и API Django без управления manage.py
1
PyCraft
Есть два отдельных приложения(в разных папках, чтобы не смешивать). Одно, полностью на Django, другое, TCP-сервер, который должен использовать некоторый код из приложения Django, а также API для работы с базой данных. Например, коннектиться к базе, используя settings и выполнять запросы, используя models, форматировать результат используя шаблоны специфичные для TCP-сервера или как-то по другому обрабатывать результат для передачи клиенту. При этом код должен исполняться в процессе TCP-сервера в основном или дочернем потоке, а не в процессе управляемом Django.

Вопрос, можно ли так работать без управления Django, т.е. не запуская manage.py? Как вообще это правильно делать?
Хотелось бы посмотреть примеры.
Александр Кошелев
Можно сделать свою команду для manage.py: http://webnewage.org/post/2008/2/5/komandovat-paradom-budet-django/ - и в ней использовать сервер.
Либо определить переменную окружения DJANGO_SETTINGS_MODULE и использовать джанго проект из стороннего питон-приложения.
PyCraft
Загрузить TCP-сервер из под Django, чтобы при этом было доступно API, как я понимаю, можно либо форком либо в потоке. Оба варианта мне не нравятся.
Также, хотелось бы не нагружать Django-проект посторонней работой, а просто импортировать нужные модули в TCP-проект, как это делается для некоторых классов из Django.
Пусть даже для этого придется скопировать модули.
Александр Кошелев
PyCraft
Загрузить TCP-сервер из под Django, чтобы при этом было доступно API, как я понимаю, можно либо форком либо в потоке.
Вовсе нет. В обработчике команды запускайте сервер и всё. Просто у вас поменяется точка входа.
PyCraft
Также, хотелось бы не нагружать Django-проект посторонней работой, а просто импортировать нужные модули в TCP-проект, как это делается для некоторых классов из Django.
Тогда второй вариант более подходит.
PyCraft
Daevaorn
определить переменную окружения DJANGO_SETTINGS_MODULE и использовать джанго проект из стороннего питон-приложения.
Пожалуй подходит, спасибо! Буду копать.

Допустим, на этапе разработки я определю переменную окружения и всё получится, а приложение должно будет работать на другом сервере, где нет Django, но есть БД. Придется установить Django и Django-проект на ту машину тоже? Или можно как-то собрать всё в один исполняемый файл?

это TCP-приложение планируется использовать на неизвестном заранее компьютере/сервере и нежелательно усложнять установку.
Александр Кошелев
PyCraft
Допустим, на этапе разработки я определю переменную окружения и всё получится, а приложение должно будет работать на другом сервере, где нет Django, но есть БД. Придется установить Django и Django-проект на ту машину тоже? Или можно как-то собрать всё в один исполняемый файл?
Джанга и проект в любом случае будут нужны на целевой машине. Для упрощения можно их включит в пакет самого сервера. А окружение настроить чисто питоночьим методом.

PyCraft
это TCP-приложение планируется использовать на неизвестном заранее компьютере/сервере и нежелательно усложнять установку.
А то что там будет питон тоже не гарантировано?;)
PyCraft
Daevaorn
А то что там будет питон тоже не гарантировано?wink
Кое где, как допущение, может и не быть, поэтому для таких случаев придется скомпилировать исполняемый файл и включить в него Питон.
denz
import sys, os
sys.path.insert(0,"path_to_django_project")

from django.core.management import setup_environ
import settings
setup_environ(settings)
С этого момента можно импортировать модули из проекта и работать с ними.
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