PyCraft
Июль 2, 2008 20:51:45
Есть два отдельных приложения(в разных папках, чтобы не смешивать). Одно, полностью на Django, другое, TCP-сервер, который должен использовать некоторый код из приложения Django, а также API для работы с базой данных. Например, коннектиться к базе, используя settings и выполнять запросы, используя models, форматировать результат используя шаблоны специфичные для TCP-сервера или как-то по другому обрабатывать результат для передачи клиенту. При этом код должен исполняться в процессе TCP-сервера в основном или дочернем потоке, а не в процессе управляемом Django.
Вопрос, можно ли так работать без управления Django, т.е. не запуская manage.py? Как вообще это правильно делать?
Хотелось бы посмотреть примеры.
Александр Кошелев
Июль 2, 2008 21:25:31
Можно сделать свою команду для manage.py:
http://webnewage.org/post/2008/2/5/komandovat-paradom-budet-django/ - и в ней использовать сервер.
Либо определить переменную окружения DJANGO_SETTINGS_MODULE и использовать джанго проект из стороннего питон-приложения.
PyCraft
Июль 3, 2008 01:17:54
Загрузить TCP-сервер из под Django, чтобы при этом было доступно API, как я понимаю, можно либо форком либо в потоке. Оба варианта мне не нравятся.
Также, хотелось бы не нагружать Django-проект посторонней работой, а просто импортировать нужные модули в TCP-проект, как это делается для некоторых классов из Django.
Пусть даже для этого придется скопировать модули.
Александр Кошелев
Июль 3, 2008 09:45:59
PyCraft
Загрузить TCP-сервер из под Django, чтобы при этом было доступно API, как я понимаю, можно либо форком либо в потоке.
Вовсе нет. В обработчике команды запускайте сервер и всё. Просто у вас поменяется точка входа.
PyCraft
Также, хотелось бы не нагружать Django-проект посторонней работой, а просто импортировать нужные модули в TCP-проект, как это делается для некоторых классов из Django.
Тогда второй вариант более подходит.
PyCraft
Июль 3, 2008 11:04:20
Daevaorn
определить переменную окружения DJANGO_SETTINGS_MODULE и использовать джанго проект из стороннего питон-приложения.
Пожалуй подходит, спасибо! Буду копать.
Допустим, на этапе разработки я определю переменную окружения и всё получится, а приложение должно будет работать на другом сервере, где нет Django, но есть БД. Придется установить Django и Django-проект на ту машину тоже? Или можно как-то собрать всё в один исполняемый файл?
это TCP-приложение планируется использовать на неизвестном заранее компьютере/сервере и нежелательно усложнять установку.
Александр Кошелев
Июль 3, 2008 14:24:54
PyCraft
Допустим, на этапе разработки я определю переменную окружения и всё получится, а приложение должно будет работать на другом сервере, где нет Django, но есть БД. Придется установить Django и Django-проект на ту машину тоже? Или можно как-то собрать всё в один исполняемый файл?
Джанга и проект в любом случае будут нужны на целевой машине. Для упрощения можно их включит в пакет самого сервера. А окружение
настроить чисто питоночьим методом.
PyCraft
это TCP-приложение планируется использовать на неизвестном заранее компьютере/сервере и нежелательно усложнять установку.
А то что там будет питон тоже не гарантировано?;)
PyCraft
Июль 3, 2008 15:55:19
Daevaorn
А то что там будет питон тоже не гарантировано?wink
Кое где, как допущение, может и не быть, поэтому для таких случаев придется скомпилировать исполняемый файл и включить в него Питон.
denz
Июль 5, 2008 23:29:06
import sys, os
sys.path.insert(0,"path_to_django_project")
from django.core.management import setup_environ
import settings
setup_environ(settings)
С этого момента можно импортировать модули из проекта и работать с ними.