优化程序流程

This commit is contained in:
Jalin
2019-01-13 11:02:02 +08:00
parent ea10558bff
commit 751c01298f
8 changed files with 28 additions and 11 deletions

View File

@@ -56,10 +56,10 @@ class App:
def register_sign(self):
is_windows = os.name == 'nt'
if is_windows:
signs = [signal.SIGINT, signal.SIGTERM]
else:
signs = [signal.SIGINT, signal.SIGHUP, signal.SIGTERM]
# if is_windows:
signs = [signal.SIGINT, signal.SIGTERM]
# else:
# signs = [signal.SIGINT, signal.SIGHUP, signal.SIGTERM] # SIGHUP 会导致终端退出,程序也退出,暂时去掉
for sign in signs:
signal.signal(sign, self.handler_exit)

View File

@@ -36,6 +36,7 @@ class Event():
for job in query.jobs:
if job.account_key == data.get('key'):
create_thread_and_run(job, 'check_passengers', Const.IS_TEST) # 检查乘客信息 防止提交订单时才检查
stay_second(1)
def user_job_destroy(self, data={}, callback=False):
from py12306.user.user import User

View File

@@ -49,6 +49,9 @@ class CommonLog(BaseLog):
if not Const.IS_TEST and Config().OUT_PUT_LOG_TO_FILE_ENABLED:
self.add_quick_log()
self.add_quick_log('日志已输出到文件中: {}'.format(Config().OUT_PUT_LOG_TO_FILE_PATH))
if Config().WEB_ENABLE:
self.add_quick_log()
self.add_quick_log('WEB 管理页面已开启,请访问 主机地址 + 端口 {} 进行查看'.format(Config().WEB_PORT))
self.add_quick_log()
self.flush(file=False, publish=False)
@@ -64,8 +67,10 @@ class CommonLog(BaseLog):
self.add_quick_log('多线程查询: {}'.format(get_true_false_text(Config().QUERY_JOB_THREAD_ENABLED, enable, disable)))
self.add_quick_log(
'语音验证码: {}'.format(get_true_false_text(Config().NOTIFICATION_BY_VOICE_CODE, enable, disable)))
self.add_quick_log('邮件通知: {}'.format(get_true_false_text(Config().EMAIL_ENABLED, enable, disable)))
self.add_quick_log('查询间隔: {}'.format(Config().QUERY_INTERVAL))
self.add_quick_log('用户心跳检测间隔: {}'.format(Config().USER_HEARTBEAT_INTERVAL))
self.add_quick_log('WEB 管理页面: {}'.format(get_true_false_text(Config().WEB_ENABLE, enable, disable)))
if Config().is_cluster_enabled():
from py12306.cluster.cluster import Cluster
self.add_quick_log('分布式查询: {}'.format(get_true_false_text(Config().is_cluster_enabled(), enable, enable)))

View File

@@ -33,10 +33,10 @@ class QueryLog(BaseLog):
MESSAGE_SKIP_ORDER = '跳过本次请求,节点 {} 用户 {} 正在处理该订单\n'
MESSAGE_QUERY_JOB_BEING_DESTROY = '当前查询任务 {} 已结束\n'
MESSAGE_QUERY_JOB_BEING_DESTROY = '查询任务 {} 已结束\n'
MESSAGE_INIT_PASSENGERS_SUCCESS = '初始化乘客成功'
MESSAGE_CHECK_PASSENGERS = '正在验证乘客信息'
MESSAGE_CHECK_PASSENGERS = '查询任务 {} 正在验证乘客信息'
MESSAGE_USER_IS_EMPTY_WHEN_DO_ORDER = '未配置自动下单账号,{} 秒后继续查询\n'
MESSAGE_ORDER_USER_IS_EMPTY = '未找到下单账号,{} 秒后继续查询'

View File

@@ -302,8 +302,10 @@ class Order:
:return:
"""
self.current_queue_wait = self.max_queue_wait
self.queue_num = 0
while self.current_queue_wait:
self.current_queue_wait -= self.wait_queue_interval
self.queue_num += 1
# TODO 取消超时订单,待优化
data = { #
'random': str(random.random())[2:],
@@ -346,7 +348,7 @@ class Order:
result.get('messages', result.get('validateMessages')))).flush()
else:
pass
OrderLog.add_quick_log(OrderLog.MESSAGE_QUERY_ORDER_WAIT_TIME_INFO.format(self.current_queue_wait)).flush()
OrderLog.add_quick_log(OrderLog.MESSAGE_QUERY_ORDER_WAIT_TIME_INFO.format(self.queue_num)).flush()
stay_second(self.wait_queue_interval)
return False

View File

@@ -266,8 +266,12 @@ class Job:
def check_passengers(self):
if not self.passengers:
QueryLog.add_quick_log(QueryLog.MESSAGE_CHECK_PASSENGERS).flush()
self.set_passengers(User.get_passenger_for_members(self.members, self.account_key))
QueryLog.add_quick_log(QueryLog.MESSAGE_CHECK_PASSENGERS.format(self.job_name)).flush()
passengers = User.get_passenger_for_members(self.members, self.account_key)
if passengers:
self.set_passengers(passengers)
else: # 退出当前查询任务
self.destroy()
return True
def refresh_station(self, station):

View File

@@ -324,8 +324,8 @@ class UserJob:
passenger = array_dict_find_by_key_value(self.passengers, 'passenger_name', member)
if not passenger:
UserLog.add_quick_log(
UserLog.MESSAGE_USER_PASSENGERS_IS_INVALID.format(self.user_name, member)).flush(
exit=True) # TODO 需要优化
UserLog.MESSAGE_USER_PASSENGERS_IS_INVALID.format(self.user_name, member)).flush()
return False
new_member = {
'name': passenger.get('passenger_name'),
'id_card': passenger.get('passenger_id_no'),

View File

@@ -1,4 +1,5 @@
import json
import logging
from datetime import timedelta
from flask import Flask, request
@@ -13,9 +14,13 @@ from py12306.helpers.func import *
class Web:
session = None
jwt = None
log = None
def __init__(self):
self.session = Flask(__name__)
self.log = logging.getLogger('werkzeug')
self.log.setLevel(logging.ERROR)
self.register_blueprint()
self.session.config['JWT_SECRET_KEY'] = 'secret' # 目前都是本地,暂不用放配置文件
self.session.config['JWT_ACCESS_TOKEN_EXPIRES'] = timedelta(seconds=60 * 60 * 24 * 7) # Token 超时时间 7 天