python - Django如何监听启动,开启另外后台线程?
怪我咯
怪我咯 2017-04-18 10:30:44
0
1
745

1. 无法启动的时候另外启动一个后台线程

2. 部分代码如下:

mqtt_bridge/__init__.py

# coding=utf8
from bridge import start
import threading

print '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: 7124
bridge-54 INFO : MQTT client listen loop start! thread id: 8680
bridge-28 INFO : MQTT client connected with result code: 0
import bridge.start thread id: 8200
bridge-54 INFO : MQTT client listen loop start! thread id: 840
bridge-28 INFO : MQTT client connected with result code: 0
Performing system checks...

4. 很明显这个模块被导入了两次,模块里面的线程也是开启了两个,这样很耗费系统资源。

5. 其他解决办法只能去占有端口,然后判断是否已经启动,觉得太低效了。

参考:从Django启动守护进程

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(1)
伊谢尔伦

Jika anda ingin melakukan beberapa kerja permulaan dalam APP Django, anda harus menyesuaikan kelas konfigurasi dalam app.py APP dan kemudian tulis semula kaedah ready().

Proses permulaan aplikasi Django: https://docs.djangoproject.co...

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!