Django Task/Command 最佳执行 Practice/Understanding

Django Task/Command Execution Best Practice/Understanding

我在理解 django 管理命令时遇到了一些问题。我有一个 Web 应用程序,它通过 eth0 显示一些网络流量信息。因此,我创建了一个 python class 来分析流量和 create/update 数据库中的特定数据。像这样:

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

然后我创建一个管理命令来创建这个 class 实例和 运行s startAnalyzing().

现在我的问题是:

这是通过管理命令执行此操作的正确方法吗,因为任务不会终止(运行 整个时间)而不是通过 Web 应用程序 started/stopped?或者正确的做法是什么?

不通过 django 启动 "Analyzer" 可能更好吗?我是 django 的新手,不想以正确的方式去做。

当我 运行: manage.py 运行server 0.0.0.0:8080 时是否可以开始嗅探流量?

非常感谢。

您正在做的不是管理命令。其实管理命令顾名思义就是管理某事的命令,做一个快速的动作。不在 Web 应用程序的整个生命周期内保留整个过程 运行。

要实现您想要的,您应该编写一个简单的 python 脚本并将其 运行 作为进程管理器(主管?)。然后你必须在脚本的开头 setup django 才能访问 Django 的 ORM,这可能是你选择 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

这样您就可以像在普通 Django 应用程序中一样使用 Django 的 ORM。您还可以像往常一样提供数据库的模板和视图。

唯一剩下的就是保留脚本 运行,您可以简单地使用 supervisord