Commit 25049389 authored by Jalin's avatar Jalin

优化程序流程

parent 7c62c1eb
...@@ -56,10 +56,10 @@ class App: ...@@ -56,10 +56,10 @@ class App:
def register_sign(self): def register_sign(self):
is_windows = os.name == 'nt' is_windows = os.name == 'nt'
if is_windows: # if is_windows:
signs = [signal.SIGINT, signal.SIGTERM] signs = [signal.SIGINT, signal.SIGTERM]
else: # else:
signs = [signal.SIGINT, signal.SIGHUP, signal.SIGTERM] # signs = [signal.SIGINT, signal.SIGHUP, signal.SIGTERM] # SIGHUP 会导致终端退出,程序也退出,暂时去掉
for sign in signs: for sign in signs:
signal.signal(sign, self.handler_exit) signal.signal(sign, self.handler_exit)
......
...@@ -36,6 +36,7 @@ class Event(): ...@@ -36,6 +36,7 @@ class Event():
for job in query.jobs: for job in query.jobs:
if job.account_key == data.get('key'): if job.account_key == data.get('key'):
create_thread_and_run(job, 'check_passengers', Const.IS_TEST) # 检查乘客信息 防止提交订单时才检查 create_thread_and_run(job, 'check_passengers', Const.IS_TEST) # 检查乘客信息 防止提交订单时才检查
stay_second(1)
def user_job_destroy(self, data={}, callback=False): def user_job_destroy(self, data={}, callback=False):
from py12306.user.user import User from py12306.user.user import User
......
...@@ -49,6 +49,9 @@ class CommonLog(BaseLog): ...@@ -49,6 +49,9 @@ class CommonLog(BaseLog):
if not Const.IS_TEST and Config().OUT_PUT_LOG_TO_FILE_ENABLED: if not Const.IS_TEST and Config().OUT_PUT_LOG_TO_FILE_ENABLED:
self.add_quick_log() self.add_quick_log()
self.add_quick_log('日志已输出到文件中: {}'.format(Config().OUT_PUT_LOG_TO_FILE_PATH)) 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.add_quick_log()
self.flush(file=False, publish=False) self.flush(file=False, publish=False)
...@@ -64,8 +67,10 @@ class CommonLog(BaseLog): ...@@ -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().QUERY_JOB_THREAD_ENABLED, enable, disable)))
self.add_quick_log( self.add_quick_log(
'语音验证码: {}'.format(get_true_false_text(Config().NOTIFICATION_BY_VOICE_CODE, enable, disable))) '语音验证码: {}'.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().QUERY_INTERVAL))
self.add_quick_log('用户心跳检测间隔: {} 秒'.format(Config().USER_HEARTBEAT_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(): if Config().is_cluster_enabled():
from py12306.cluster.cluster import Cluster from py12306.cluster.cluster import Cluster
self.add_quick_log('分布式查询: {}'.format(get_true_false_text(Config().is_cluster_enabled(), enable, enable))) self.add_quick_log('分布式查询: {}'.format(get_true_false_text(Config().is_cluster_enabled(), enable, enable)))
......
...@@ -33,10 +33,10 @@ class QueryLog(BaseLog): ...@@ -33,10 +33,10 @@ class QueryLog(BaseLog):
MESSAGE_SKIP_ORDER = '跳过本次请求,节点 {} 用户 {} 正在处理该订单\n' MESSAGE_SKIP_ORDER = '跳过本次请求,节点 {} 用户 {} 正在处理该订单\n'
MESSAGE_QUERY_JOB_BEING_DESTROY = '当前查询任务 {} 已结束\n' MESSAGE_QUERY_JOB_BEING_DESTROY = '查询任务 {} 已结束\n'
MESSAGE_INIT_PASSENGERS_SUCCESS = '初始化乘客成功' MESSAGE_INIT_PASSENGERS_SUCCESS = '初始化乘客成功'
MESSAGE_CHECK_PASSENGERS = '正在验证乘客信息' MESSAGE_CHECK_PASSENGERS = '查询任务 {} 正在验证乘客信息'
MESSAGE_USER_IS_EMPTY_WHEN_DO_ORDER = '未配置自动下单账号,{} 秒后继续查询\n' MESSAGE_USER_IS_EMPTY_WHEN_DO_ORDER = '未配置自动下单账号,{} 秒后继续查询\n'
MESSAGE_ORDER_USER_IS_EMPTY = '未找到下单账号,{} 秒后继续查询' MESSAGE_ORDER_USER_IS_EMPTY = '未找到下单账号,{} 秒后继续查询'
......
...@@ -302,8 +302,10 @@ class Order: ...@@ -302,8 +302,10 @@ class Order:
:return: :return:
""" """
self.current_queue_wait = self.max_queue_wait self.current_queue_wait = self.max_queue_wait
self.queue_num = 0
while self.current_queue_wait: while self.current_queue_wait:
self.current_queue_wait -= self.wait_queue_interval self.current_queue_wait -= self.wait_queue_interval
self.queue_num += 1
# TODO 取消超时订单,待优化 # TODO 取消超时订单,待优化
data = { # data = { #
'random': str(random.random())[2:], 'random': str(random.random())[2:],
...@@ -346,7 +348,7 @@ class Order: ...@@ -346,7 +348,7 @@ class Order:
result.get('messages', result.get('validateMessages')))).flush() result.get('messages', result.get('validateMessages')))).flush()
else: else:
pass 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) stay_second(self.wait_queue_interval)
return False return False
......
...@@ -266,8 +266,12 @@ class Job: ...@@ -266,8 +266,12 @@ class Job:
def check_passengers(self): def check_passengers(self):
if not self.passengers: if not self.passengers:
QueryLog.add_quick_log(QueryLog.MESSAGE_CHECK_PASSENGERS).flush() QueryLog.add_quick_log(QueryLog.MESSAGE_CHECK_PASSENGERS.format(self.job_name)).flush()
self.set_passengers(User.get_passenger_for_members(self.members, self.account_key)) passengers = User.get_passenger_for_members(self.members, self.account_key)
if passengers:
self.set_passengers(passengers)
else: # 退出当前查询任务
self.destroy()
return True return True
def refresh_station(self, station): def refresh_station(self, station):
......
...@@ -324,8 +324,8 @@ class UserJob: ...@@ -324,8 +324,8 @@ class UserJob:
passenger = array_dict_find_by_key_value(self.passengers, 'passenger_name', member) passenger = array_dict_find_by_key_value(self.passengers, 'passenger_name', member)
if not passenger: if not passenger:
UserLog.add_quick_log( UserLog.add_quick_log(
UserLog.MESSAGE_USER_PASSENGERS_IS_INVALID.format(self.user_name, member)).flush( UserLog.MESSAGE_USER_PASSENGERS_IS_INVALID.format(self.user_name, member)).flush()
exit=True) # TODO 需要优化 return False
new_member = { new_member = {
'name': passenger.get('passenger_name'), 'name': passenger.get('passenger_name'),
'id_card': passenger.get('passenger_id_no'), 'id_card': passenger.get('passenger_id_no'),
......
import json import json
import logging
from datetime import timedelta from datetime import timedelta
from flask import Flask, request from flask import Flask, request
...@@ -13,9 +14,13 @@ from py12306.helpers.func import * ...@@ -13,9 +14,13 @@ from py12306.helpers.func import *
class Web: class Web:
session = None session = None
jwt = None jwt = None
log = None
def __init__(self): def __init__(self):
self.session = Flask(__name__) self.session = Flask(__name__)
self.log = logging.getLogger('werkzeug')
self.log.setLevel(logging.ERROR)
self.register_blueprint() self.register_blueprint()
self.session.config['JWT_SECRET_KEY'] = 'secret' # 目前都是本地,暂不用放配置文件 self.session.config['JWT_SECRET_KEY'] = 'secret' # 目前都是本地,暂不用放配置文件
self.session.config['JWT_ACCESS_TOKEN_EXPIRES'] = timedelta(seconds=60 * 60 * 24 * 7) # Token 超时时间 7 天 self.session.config['JWT_ACCESS_TOKEN_EXPIRES'] = timedelta(seconds=60 * 60 * 24 * 7) # Token 超时时间 7 天
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment