问题描述
使用uwsgi+django部署生产环境时,由于uwsgi开启多个线程,导致任务计划被执行多次。
解决方式
通过socket接口来判断是否已经启用任务计划,防止计划任务多开,代码如下:
import datetime,socket from apscheduler.schedulers.background import BackgroundScheduler from django_apscheduler.jobstores import DjangoJobStore,register_job,register_events from Data_Display.models import Data_Display_History_Computer from Data_Display.Modul import Get_Asset_Distribution # ####################写定时器执行################## # # try: sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.bind(('127.0.0.1',47200)) except: print("已启动一个任务计划进程!") else: sched = BackgroundScheduler() sched.add_jobstore(DjangoJobStore(),"default") @register_job(sched, 'cron', hour='0', minute='0', second='0',replace_existing=True) def Create_Data_Display_History(): data=Get_Asset_Distribution('主机') for line in data: Data_Display_History_Computer.objects.create(Name=line['name'],Value=line['value'],Date=datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d'),Create_DateTime=datetime.datetime.now()) try: sched.start() except: print('任务计划启动失败')
2021-7-1 13:58:16
评论区