Как написать HTML GUI (Django) для модуля сервера Python - PullRequest
1 голос
/ 10 июля 2011

Как можно создать HTML-интерфейс, например, для мультиплексированного tcp-сервера на python?

Я знаком с созданием сайтов с помощью Django, но я не понимаю, какСерверная часть TCP взаимодействует со связанными представлениями Django?Как я могу реализовать обмен данными (вижу ли я дерево для деревьев)?Для меня проблема заключается в сопоставлении между "не имеющим состояния" и "модулем py" состояния "работает как демон".

greetings

изменить скелет моего автономного приложения:

#!/usr/bin/python

from django.core.management import setup_environ
import settings
setup_environ(settings)

from myapp.models import fanzy


def main():
    for each in fanzy.objects.all():
        print each.id, each.foo


if __name__ == '__main__':
    main()

Ответы [ 2 ]

2 голосов
/ 11 июля 2011

Не всегда так просто импортировать библиотеки, в основном из-за времени жизни процесса.Например, если вы запускаете Django через CGI с 1 запросом на процесс, то ваш TCP-сервер не будет работать между представлениями.Точно так же, если вы используете несколько процессов для обработки запросов (например, с помощью FastCGI), тогда у вас будет несколько серверов, работающих одновременно.

Если вы хотите, чтобы постоянные сетевые подключения работали независимо от времени жизни запроса, выВам нужно будет запустить сервер TCP во внешнем (демоническом) процессе.Это стандартная процедура для некоторых схем кэширования, где все ваши процессы Django совместно используют кэшированные данные с помощью одного демона (например, Redis).

В основном у вас есть два подхода.

Глобальное соединение

Либо установите соединение для каждого процесса Django (если у вас их более одного) в качестве глобального объекта и перенаправьте запросы на него с вашей точки зрения.Это наиболее удобно, если ваш TCP-сервер закодирован для обработки нескольких запросов на соединение.Однако у вас могут возникнуть проблемы, если ваш процесс Django является многопоточным.

Соединение на запрос

Если ваш TCP-сервер может принимать несколько кратковременных соединений, это также жизнеспособный подход.Просто откройте соединение на всю жизнь вашего зрения.Если этот объект используется достаточно часто, вы даже можете добавить часть промежуточного программного обеспечения, которое открывает соединение и сохраняет его в объекте запроса.

2 голосов
/ 11 июля 2011

Django - это просто Python , поэтому все, что вы написали на Python, можно импортировать и ссылаться на «представления», которые вы пишете для Django, чтобы они служили ответом HTTP.

В ответ на другую часть вашего вопроса, HTTP-сервер, обрабатывающий TCP-соединения, взаимодействует с платформой Python, чаще всего через протокол, называемый WSGI. Это хорошее место , чтобы получить больше знаний о принципах WSGI.Это еще один .

Что касается запуска фонового процесса и предоставления представления о действиях этих процессов, может быть лучше разделить две проблемы.Вы можете записать данные в файл или базу данных, а затем получить доступ к этим данным и предоставить их через ваше веб-приложение.

Это просто общие комментарии, поскольку ваш вопрос не совсем понятен.Пожалуйста, не стесняйтесь отвечать на дополнительные вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...