Files
py12306/old_py12306/helpers/event.py
2019-05-14 13:21:25 +08:00

49 lines
1.7 KiB
Python

from py12306.helpers.func import *
from py12306.config import Config
@singleton
class Event():
"""
处理事件
"""
# 事件
KEY_JOB_DESTROY = 'job_destroy'
KEY_USER_JOB_DESTROY = 'user_job_destroy'
KEY_USER_LOADED = 'user_loaded'
cluster = None
def __init__(self):
from py12306.cluster.cluster import Cluster
self.cluster = Cluster()
def job_destroy(self, data={}, callback=False): # 停止查询任务
from py12306.query.query import Query
if Config().is_cluster_enabled() and not callback:
return self.cluster.publish_event(self.KEY_JOB_DESTROY, data) # 通知其它节点退出
job = Query.job_by_name(data.get('name'))
if job:
job.destroy()
def user_loaded(self, data={}, callback=False): # 用户初始化完成
if Config().is_cluster_enabled() and not callback:
return self.cluster.publish_event(self.KEY_USER_LOADED, data) # 通知其它节点退出
from py12306.query.query import Query
if not Config().is_cluster_enabled() or Config().is_master():
query = Query.wait_for_ready()
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
if Config().is_cluster_enabled() and not callback:
return self.cluster.publish_event(self.KEY_JOB_DESTROY, data) # 通知其它节点退出
user = User.get_user(data.get('key'))
if user:
user.destroy()