Форум сайта python.su
Есть два отдельных приложения(в разных папках, чтобы не смешивать). Одно, полностью на 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 и использовать джанго проект из стороннего питон-приложения.
Офлайн
Загрузить TCP-сервер из под Django, чтобы при этом было доступно API, как я понимаю, можно либо форком либо в потоке. Оба варианта мне не нравятся.
Также, хотелось бы не нагружать Django-проект посторонней работой, а просто импортировать нужные модули в TCP-проект, как это делается для некоторых классов из Django.
Пусть даже для этого придется скопировать модули.
Офлайн
PyCraftВовсе нет. В обработчике команды запускайте сервер и всё. Просто у вас поменяется точка входа.
Загрузить TCP-сервер из под Django, чтобы при этом было доступно API, как я понимаю, можно либо форком либо в потоке.
PyCraftТогда второй вариант более подходит.
Также, хотелось бы не нагружать Django-проект посторонней работой, а просто импортировать нужные модули в TCP-проект, как это делается для некоторых классов из Django.
Офлайн
DaevaornПожалуй подходит, спасибо! Буду копать.
определить переменную окружения DJANGO_SETTINGS_MODULE и использовать джанго проект из стороннего питон-приложения.
Отредактировано (Июль 3, 2008 11:09:27)
Офлайн
PyCraftДжанга и проект в любом случае будут нужны на целевой машине. Для упрощения можно их включит в пакет самого сервера. А окружение настроить чисто питоночьим методом.
Допустим, на этапе разработки я определю переменную окружения и всё получится, а приложение должно будет работать на другом сервере, где нет Django, но есть БД. Придется установить Django и Django-проект на ту машину тоже? Или можно как-то собрать всё в один исполняемый файл?
PyCraftА то что там будет питон тоже не гарантировано?;)
это TCP-приложение планируется использовать на неизвестном заранее компьютере/сервере и нежелательно усложнять установку.
Офлайн
DaevaornКое где, как допущение, может и не быть, поэтому для таких случаев придется скомпилировать исполняемый файл и включить в него Питон.
А то что там будет питон тоже не гарантировано?wink
Офлайн
import sys, os
sys.path.insert(0,"path_to_django_project")
from django.core.management import setup_environ
import settings
setup_environ(settings)
Офлайн