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...
