- change : 添加自动关闭服务功能

This commit is contained in:
lamter 2017-04-26 22:47:59 +08:00
parent 287836bf28
commit cf7adb015a
2 changed files with 57 additions and 6 deletions

View File

@ -4,9 +4,12 @@
包含一些开发中常用的函数 包含一些开发中常用的函数
""" """
import vtGlobal
import os import os
import decimal import decimal
import json import json
import time
import datetime as dt
from datetime import datetime from datetime import datetime
MAX_NUMBER = 10000000000000 MAX_NUMBER = 10000000000000
@ -31,13 +34,14 @@ def safeUnicode(value):
#---------------------------------------------------------------------- #----------------------------------------------------------------------
def loadMongoSetting(): def loadMongoSetting():
"""载入MongoDB数据库的配置""" """载入MongoDB数据库的配置"""
fileName = 'VT_setting.json' # fileName = 'VT_setting.json'
path = os.path.abspath(os.path.dirname(__file__)) # path = os.path.abspath(os.path.dirname(__file__))
fileName = os.path.join(path, fileName) # fileName = os.path.join(path, fileName)
setting = vtGlobal.VT_setting.copy()
try: try:
f = file(fileName) # f = file(fileName)
setting = json.load(f) # setting = json.load(f)
host = setting['mongoHost'] host = setting['mongoHost']
port = setting['mongoPort'] port = setting['mongoPort']
logging = setting['mongoLogging'] logging = setting['mongoLogging']
@ -54,3 +58,48 @@ def todayDate():
return datetime.now().replace(hour=0, minute=0, second=0, microsecond=0) return datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
def autoshutdown(clocks=None):
"""
根据当前启动时间设置自动关闭时间
2:31 之前启动服务器那么在2:31 会自动关闭
2:31 ~ 8:39 之间启动会在8:39关闭以此类推
20:39 之后关闭会在次日 2:31 自动关闭
>>> autoshutdown().closeTime == todayDate().replace(hour=15, minute=39)
True
:return:
"""
clocks = clocks or [
dt.time(2, 31), # 夜盘后关闭
dt.time(8, 39), # 日盘前关闭
dt.time(15, 39), # 日盘后关闭
dt.time(20, 39), # 夜盘前关闭
]
from threading import Thread
now = datetime.now()
today = todayDate()
tomorrow = today + dt.timedelta(days=1)
for t in clocks:
if now.time() < t:
# 关闭时间在当日
closeTime = datetime.combine(today, t)
break
else:
# 关闭时间在次日
closeTime = datetime.combine(tomorrow, clocks[0])
def shutdown(closeTime):
# 子线程阻塞直到到达关闭时间
while datetime.now() < closeTime:
time.sleep(1)
t = Thread(target=shutdown, args=(closeTime,))
t.closeTime = closeTime
t.start()
return t

View File

@ -7,6 +7,7 @@ from argparse import ArgumentParser
from datetime import datetime from datetime import datetime
from vtFunction import autoshutdown
from vnrpc import RpcServer from vnrpc import RpcServer
from vtEngine import MainEngine from vtEngine import MainEngine
@ -86,6 +87,7 @@ def runServer():
# 自动建立MongoDB数据库 # 自动建立MongoDB数据库
printLog(u'MongoDB connect... ') printLog(u'MongoDB connect... ')
server.engine.dbConnect() server.engine.dbConnect()
printLog(u'MongoDB OK... ')
if VT_setting.get('autoctp'): if VT_setting.get('autoctp'):
# 自动建立CTP链接 # 自动建立CTP链接