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。
我在理解 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。