0

У меня есть небольшая проблема с пониманием команд управления django. У меня есть веб-приложение, которое отображает информацию о сетевом трафике через eth0. Поэтому я создал класс python, который анализирует трафик и создает/обновляет конкретные данные в базе данных. Что-то вроде этого:Django Task/Command Execution Лучшая практика/понимание

class Analyzer: 
    def doSomething(self): 
     #analyze the traffic create/update data in db 
    def startAnalyzing(self): 
     while 1: 
       self.doSomething() 

Затем я создаю команду управления, которая создает этот экземпляр класса и запускает startAnalyzing().

Теперь мой вопрос:

Является ли это правильный способ сделать это через команду управления, поскольку задача не была прекращена (запустить все время), а не запускать/останавливать с помощью WebApplication? Или что это правильный путь?

Возможно, лучше запустить «Анализатор» не через django? Я новичок в django и не буду делать это правильно.

Возможно ли начать обнюхивать трафик при запуске: manage.py runningerver 0.0.0.0:8080?

Большое спасибо заранее.

ответ

0

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

Для достижения того, что вы хотите, вы должны написать простой скрипт python и продолжить его работу с диспетчером процессов (супервизор?). Вам просто нужно установить setup django в начале скрипта, чтобы иметь доступ к ORM Django, что, вероятно, является причиной того, что вы выбрали Django.

Так что в целом, вы скрипт будет выглядеть примерно так:

import sys, os 
sys.path.insert(0, "/path/to/parent/of/project") # /home/projects/django-proj 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", 'proj.settings') 

import django 
django.setup() 

from proj.app.models import DBModel 

Таким образом, вы можете использовать ORM Джанго, как вы будете использовать в обычном приложении Django. Вы также можете предоставить шаблоны и представления базы данных, как обычно.

Осталось только сохранить скрипт, и вы можете просто делать с supervisord.

+0

Большое спасибо за ваш ответ. Я посмотрю на супервизор и сделаю так, как вы описали. – elchapo