123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- # coding=utf-8
- import sys
- import os
- import csv
- from concurrent.futures import ThreadPoolExecutor, as_completed
- from base import init_env
- env = sys.argv[1]
- os.environ.setdefault('DJANGO_SETTINGS_MODULE', env)
- init_env(interactive=False)
- from apps.web.device.models import Device
- from apps.web.core.networking import MessageSender
- # class MQTTException(Exception):
- # pass
- errorDevNOs = list()
- def get_device():
- return ["865650040560647", "865650040560647", "865650040560647"]
- # return DeviceUpgradeLog.objects.values_list("devNo")
- def reboot_device(devNo):
- # dev = Device.get_dev(devNo)
- # server = dev.get("server", "120.27.251.159:1883")
- #
- # ip1, port = server.split(":")
- #
- # result = MessageSender.send(
- # dev,
- # 202,
- # {
- # "IMEI": devNo,
- # "addr_set": {
- # "ip1": ip1,
- # "port": port
- # }
- # },
- # timeout=60
- # )
- #
- # if result.get("rst") != 0:
- # return devNo
- return "OK"
- # def callback_func(future):
- # """
- # 回调函数的参数是自身
- # :param future:
- # :return:
- # """
- # e = future.exception()
- # if e and isinstance(e, MQTTException):
- # errorDevNOs.append()
- def main():
- # 获取所有的需要重启的设备
- devNos = get_device()
- print devNos
- with ThreadPoolExecutor(max_workers=20) as executor:
- toDo = list()
- for devNo in devNos:
- future = executor.submit(reboot_device, devNo)
- # future.add_done_callback(callback_func)
- toDo.append(future)
- for f in as_completed(toDo):
- print f.result()
- if f.result() != "OK":
- errorDevNOs.append({"devNo": f.result()})
- with open("errorDevNos.csv", "w") as csvFile:
- fieldnames = ["devNo"]
- w = csv.DictWriter(csvFile, fieldnames)
- w.writeheader()
- w.writerows(errorDevNOs)
- print "ok, all tasks has been done!!!"
- if __name__ == '__main__':
- main()
|