12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- import os
- import sys
- from concurrent.futures import ThreadPoolExecutor, Future
- PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
- sys.path.insert(0, PROJECT_ROOT)
- os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'configs.production')
- from script.base import init_env
- init_env(False)
- from django.conf import settings
- from apps.web.device.models import Device, DeviceDict
- from apps.web.device.define import DeviceChannelType
- from apps.web.core.mqtt_client import MqttClient
- from apps.web.core.sysparas import SysParas
- def is_online(devNo):
- return bool(Device.get_dev(devNo).online)
- def done_callback(f): # type:(Future) -> None
- debug, devNo = f.result()
- if debug:
- print('{} debug.'.format(devNo))
- else:
- with open("done_kick_off.txt", "a") as f:
- f.write("{}\n".format(devNo))
- def operate_kick_off(devNo, port):
- try:
- mqttc = MqttClient(client_id = devNo)
- mqttc.username_pw_set(settings.MQTT_USER, settings.MQTT_PSWD)
- mqttc.connect(SysParas.get_private_ip(settings.MQTT_HOSTNAME), port, 60)
- finally:
- mqttc.disconnect()
- mqttc.close()
- def kick_off(devNo, debug, check_port):
- if debug:
- return debug, devNo
- else:
- operate_kick_off(devNo, check_port)
- return debug, devNo
- def run(debug, devNoList, check_port):
- with ThreadPoolExecutor(max_workers = 20) as executor:
- for devNo in devNoList:
- executor.submit(kick_off, devNo, debug, check_port).add_done_callback(
- done_callback)
- if __name__ == '__main__':
- __list = []
- __done_list = []
- check_port = 1884
- try:
- with open("done_kick_off.txt", "r") as f:
- lines = f.readlines()
- for line in lines:
- line = line.strip()
- __done_list.append(line)
- except Exception as e:
- pass
- try:
- with open("e:\\temp\\{}\\kick_off.txt".format(check_port), "r") as f:
- lines = f.readlines()
- for line in lines:
- line = line.strip()
- if line not in __done_list:
- __list.append(line)
- except Exception as e:
- pass
- run(debug = False, devNoList = __list, check_port = check_port)
|