python - Django如何监听启动,开启另外后台线程?
问题描述
1. 无法启动的时候另外启动一个后台线程2. 部分代码如下:mqtt_bridge/__init__.py
# coding=utf8from bridge import startimport threadingprint ’import %s thread id: %s’ % (’bridge.start’, threading.current_thread().ident)start() # 重复启动啊
在Install apps里面加入模块名,在Django启动的时候会自动导入
INSTALLED_APPS = ( # ’jet.dashboard’, # ’jet’, ’django.contrib.admin’, ’django.contrib.auth’, ’django.contrib.contenttypes’, ’django.contrib.sessions’, ’django.contrib.messages’, ’django.contrib.staticfiles’, # Django rest framework ’rest_framework’, ’rest_framework.authtoken’, # my apps ’mqtt_bridge’)3. 控制台输出:
import bridge.start thread id: 7124bridge-54 INFO : MQTT client listen loop start! thread id: 8680bridge-28 INFO : MQTT client connected with result code: 0import bridge.start thread id: 8200bridge-54 INFO : MQTT client listen loop start! thread id: 840bridge-28 INFO : MQTT client connected with result code: 0Performing system checks...4. 很明显这个模块被导入了两次,模块里面的线程也是开启了两个,这样很耗费系统资源。5. 其他解决办法只能去占有端口,然后判断是否已经启动,觉得太低效了。
参考:从Django启动守护进程
问题解答
回答1:如果你想在Django的APP中执行某些初始化工作,应该在APP的app.py中自定义配置类,然后重写ready()方法即可。
Django的应用初始化过程:https://docs.djangoproject.co...