Django任务/命令执行最佳实践/理解



我在理解django管理命令方面有一点问题。我有一个web应用程序,它通过eth0显示一些网络流量信息。因此,我创建了一个python类来分析流量并创建/更新数据库中的特定数据。像这样:

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

然后我创建一个管理命令,创建这个类实例并运行startAnalyzing()

现在我的问题是:

这是正确的方式来做管理命令,因为任务不终止(运行整个时间),而不是通过web应用程序启动/停止?或者正确的方法是什么?

可能是更好地启动"分析器",而不是通过django?我是django的新手,不想用正确的方式。

当我运行:manage.py runserver 0.0.0.0:8080时,是否有可能开始嗅探流量?

提前感谢。

您所做的不是打算用管理命令做的。事实上,管理命令顾名思义就是管理某事,做快速操作的命令。而不是让整个进程在web应用的整个生命周期中运行。

要实现您想要的,您应该编写一个简单的python脚本,并让它与进程管理器(主管?)一起运行。你只需要在脚本的开头设置 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了。您还可以像往常一样提供数据库的模板和视图。

唯一剩下的事情就是保持脚本运行,您可以简单地使用superord来完成。

最新更新