def main(): _pool = Pool() service = Service() server = Server(listener=ADDR, handle=service.handle, spawn=_pool.spawn) app = Application(server) message.sub(Server.NEW_CONNECTION, service.new_connection) message.sub(Server.LOST_CONNECTION, service.lost_connection) print '=' * 50 print '=', ' '*15, 'Server Started', ' '*15, '=' print '=' * 50 app.run()
def main(): port = Setting.getGatewayPort() if not port: port = Cfg.CFG_GATEWAYSERV_PORT _pool = gevent.pool.Pool() service = Service() server = Server(('0.0.0.0', int(port)), handle=service.handle, spawn=_pool.spawn) #=========================================================== import signal logger = Gcore.getLogger('server', 'server') def close_server(): logger.warning('I got a signal.SIGUSR1 going to stop battle server') server.stop(180) def reload_server(): Gcore.reload() logger.warning('I got a signal.SIGUSR2, battle server Gcore reload()') def hook_signal(): '''捕获信号''' if os.name == 'nt': return #信号10-关服 gevent.signal(signal.SIGUSR1, close_server) #信号12-重载 gevent.signal(signal.SIGUSR2, reload_server) hook_signal() #===================================================================== message.sub(Server.NEW_CONNECTION, service.new_connection) message.sub(Server.LOST_CONNECTION, service.lost_connection) app = Application(server) print '=' * 50 print '=', ' ' * 15, 'Server Started', ' ' * 15, '=' print '=' * 50 app.run() if pid_file: with open(pid_file, 'wb') as fd: fd.write('0')
def main(): port = Setting.getGatewayPort() if not port: port = Cfg.CFG_GATEWAYSERV_PORT _pool = gevent.pool.Pool() service = Service() server = Server(('0.0.0.0', int(port)), handle=service.handle, spawn=_pool.spawn) message.sub(Server.NEW_CONNECTION, service.new_connection) message.sub(Server.LOST_CONNECTION, service.lost_connection) app = Application(server) print '=' * 50 print '=', ' '*15, 'Server Started', ' '*15, '=' print '=' * 50 app.run()
def main(): port = Setting.getGatewayPort() if not port: port = Cfg.CFG_BATTLESERV_PORT _pool = gevent.pool.Pool() service = Service() server = Server(('0.0.0.0', int(port) ), handle=service.handle, spawn=_pool.spawn) #=========================================================== import signal logger = Gcore.getLogger('server', 'server') def close_server(): logger.warning('I got a signal.SIGUSR1 going to stop server') server.stop(180) def reload_server(): Gcore.reload() logger.warning('I got a signal.SIGUSR2, Gcore reload()') def hook_signal(): '''捕获信号''' if os.name == 'nt': return #信号10-关服 gevent.signal(signal.SIGUSR1, close_server) #信号12-重载 gevent.signal(signal.SIGUSR2, reload_server) hook_signal() #===================================================================== message.sub(Server.NEW_CONNECTION, service.new_connection) message.sub(Server.LOST_CONNECTION, service.lost_connection) app = Application(server) print '=' * 50 print '=', ' '*15, 'Server Started', ' '*15, '=' print '=' * 50 app.run() if pid_file: with open(pid_file, 'wb') as fd: fd.write('0')
def main(): _pool = gevent.pool.Pool() service = Service() server = Server(('0.0.0.0', int(port)), handle=service.handle, spawn=_pool.spawn) def close_server(): #server.kill() server.stop(180) print 'server.stop' def start_server(): if server.started: print '服务器已经启动' return server.start() print 'server.start' def hook_signal(): '''捕获信号''' if os.name == 'nt': return #信号10-开服 gevent.signal(signal.SIGUSR1, start_server) #信号12-关服 gevent.signal(signal.SIGUSR2, close_server) message.sub(Server.NEW_CONNECTION, service.new_connection) message.sub(Server.LOST_CONNECTION, service.lost_connection) app = Application(server) hook_signal() print '=' * 50 print '=', ' '*15, 'Server Started', ' '*15, '=' print '=' * 50 app.run()
def outter_wrapper(func): listen_event = tuple(event.split('.')) if op == 'append': message.sub(listen_event, func) if op == 'first': message.sub(listen_event, func, front=True) if op == 'only': reset(event) message.sub(listen_event, func) return func
#Example def hello(name): print "hello, %s."%name def hi(name): print "hi, %s."%name def stop(name): print 'hello, %s. greet5'%name print 'discontinued.' ctx = message.Context() ctx.discontinued = True return ctx #订阅一个话题,并发布 message.sub('greet', hello) message.sub('greet', hi) message.pub('greet', 'lai') message.pub('greet1', 'lai1') #订阅另一个话题,并发布 message.sub('greet1', hello) message.pub('greet1', 'lai1') #取消订阅 message.unsub('greet', hello) message.pub('greet', 'unsub') #声明一个话题
def main(): port = Setting.getGatewayPort() if not port: port = Cfg.CFG_GATEWAYSERV_PORT _pool = gevent.pool.Pool() service = Service() server = Server(('0.0.0.0', int(8099)), handle=service.handle, spawn=_pool.spawn) #=========================================================== import signal #对linux一些信号进行捕获 def hook_signal(): if os.name != "nt": signal.signal(signal.SIGBUS, signal_handle) signal.signal(signal.SIGTERM, signal_handle) signal.signal(signal.SIGUSR1, signal_handle) signal.signal(signal.SIGUSR2, signal_handle) signal.signal(signal.SIGABRT, signal_handle) #屏蔽与终端控制有关的信号 signal.signal(signal.SIGTTOU, signal.SIG_IGN) signal.signal(signal.SIGTTIN, signal.SIG_IGN) signal.signal(signal.SIGTSTP, signal.SIG_IGN) signal.signal(signal.SIGHUP, signal.SIG_IGN) #linux信号处理函数 def signal_handle(sign_num, frame): import signal logger = Gcore.getLogger('system', 'server') if sign_num == signal.SIGBUS: server.stop(180) logger.warning('I got a signal.SIGBUS server stop') sys.exit(-1) elif sign_num == signal.SIGTERM: server.stop(180) logger.warning('I got a signal.SIGTERM server stop') elif sign_num == signal.SIGHUP: logger.warning('I got a signal.SIGHUP pass') pass elif sign_num == signal.SIGUSR1: #用户发送停止服务的指令 10 logger.warning('I got a signal.SIGUSR1 going to stop server') server.stop(180) elif sign_num == signal.SIGUSR2: # 12 Gcore.reload() logger.warning('I got a signal.SIGUSR2, Gcore reload()') hook_signal() #===================================================================== message.sub(Server.NEW_CONNECTION, service.new_connection) message.sub(Server.LOST_CONNECTION, service.lost_connection) app = Application(server) print '=' * 50 print '=', ' ' * 15, 'Server Started', ' ' * 15, '=' print '=' * 50 app.run() Gcore.log.warning('I got a signal.SIGUSR1 have stoped server') if pid_file: with open(pid_file, 'wb') as fd: fd.write('0')
def get_tag_Tags(self, tag): print 'signal message ------------------- :', tag.id, tag.tag_name user = session.query(Users).filter(Users.id.in_([1, 2])).scalar() print type(user) if user: print type(user) print user.id print '-----------------------分隔符-----------------' user = session.query(Users).filter().first() if user: print user.nick exit(0) import message message.sub('tag_dela', TestMessage().get_tag_Tags) from sqlalchemy import func, or_, not_, and_ #修改obj方法1 def update_example1(): """ 先查询 再修改 select XX from Users .... update xxx from Users where id=xx """ users = session.query(Users).filter(Users.id == 20).scalar() users.nick = 'qiuyan' session.add(users)
def main(): port = Setting.getGatewayPort() if not port: port = Cfg.CFG_GATEWAYSERV_PORT _pool = gevent.pool.Pool() service = Service() server = Server(('0.0.0.0', int(port)), handle=service.handle, spawn=_pool.spawn) #=========================================================== import signal ''' #对linux一些信号进行捕获 def hook_signal(): if os.name != "nt": gevent.signal(signal.SIGBUS,signal_handle) gevent.signal(signal.SIGTERM, signal_handle) gevent.signal(signal.SIGUSR1, signal_handle) gevent.signal(signal.SIGUSR2, signal_handle) gevent.signal(signal.SIGABRT, signal_handle) #屏蔽与终端控制有关的信号 gevent.signal(signal.SIGTTOU,signal.SIG_IGN) gevent.signal(signal.SIGTTIN,signal.SIG_IGN) gevent.signal(signal.SIGTSTP,signal.SIG_IGN) gevent.signal(signal.SIGHUP ,signal.SIG_IGN) #linux信号处理函数 def signal_handle(sign_num, frame): import signal logger = Gcore.getLogger('system', 'server') if sign_num == signal.SIGBUS: server.stop(180) logger.warning('I got a signal.SIGBUS server stop') sys.exit(-1) elif sign_num == signal.SIGTERM: server.stop(180) logger.warning('I got a signal.SIGTERM server stop') elif sign_num == signal.SIGHUP: logger.warning('I got a signal.SIGHUP pass') pass elif sign_num == signal.SIGUSR1: #用户发送停止服务的指令 10 logger.warning('I got a signal.SIGUSR1 going to stop server') server.stop(180) elif sign_num == signal.SIGUSR2: # 12 Gcore.reload() logger.warning('I got a signal.SIGUSR2, Gcore reload()') ''' def close_server(): logger.warning('I got a signal.SIGUSR1 going to stop server') server.stop(180) def reload_server(): Gcore.reload() logger.warning('I got a signal.SIGUSR2, Gcore reload()') def hook_signal(): '''捕获信号''' if os.name == 'nt': return #信号10-关服 gevent.signal(signal.SIGUSR1, close_server) #信号12-重载 gevent.signal(signal.SIGUSR2, reload_server) hook_signal() #===================================================================== message.sub(Server.NEW_CONNECTION, service.new_connection) message.sub(Server.LOST_CONNECTION, service.lost_connection) app = Application(server) print '=' * 50 print '=', ' '*15, 'Server Started', ' '*15, '=' print '=' * 50 app.run() Gcore.log.warning('I got a signal.SIGUSR1 have stoped server') if pid_file: with open(pid_file, 'wb') as fd: fd.write('0')
def main(): port = Setting.getGatewayPort() if not port: port = Cfg.CFG_GATEWAYSERV_PORT _pool = gevent.pool.Pool() service = Service() server = Server(("0.0.0.0", int(8099)), handle=service.handle, spawn=_pool.spawn) # =========================================================== import signal # 对linux一些信号进行捕获 def hook_signal(): if os.name != "nt": signal.signal(signal.SIGBUS, signal_handle) signal.signal(signal.SIGTERM, signal_handle) signal.signal(signal.SIGUSR1, signal_handle) signal.signal(signal.SIGUSR2, signal_handle) signal.signal(signal.SIGABRT, signal_handle) # 屏蔽与终端控制有关的信号 signal.signal(signal.SIGTTOU, signal.SIG_IGN) signal.signal(signal.SIGTTIN, signal.SIG_IGN) signal.signal(signal.SIGTSTP, signal.SIG_IGN) signal.signal(signal.SIGHUP, signal.SIG_IGN) # linux信号处理函数 def signal_handle(sign_num, frame): import signal logger = Gcore.getLogger("system", "server") if sign_num == signal.SIGBUS: server.stop(180) logger.warning("I got a signal.SIGBUS server stop") sys.exit(-1) elif sign_num == signal.SIGTERM: server.stop(180) logger.warning("I got a signal.SIGTERM server stop") elif sign_num == signal.SIGHUP: logger.warning("I got a signal.SIGHUP pass") pass elif sign_num == signal.SIGUSR1: # 用户发送停止服务的指令 10 logger.warning("I got a signal.SIGUSR1 going to stop server") server.stop(180) elif sign_num == signal.SIGUSR2: # 12 Gcore.reload() logger.warning("I got a signal.SIGUSR2, Gcore reload()") hook_signal() # ===================================================================== message.sub(Server.NEW_CONNECTION, service.new_connection) message.sub(Server.LOST_CONNECTION, service.lost_connection) app = Application(server) print "=" * 50 print "=", " " * 15, "Server Started", " " * 15, "=" print "=" * 50 app.run() Gcore.log.warning("I got a signal.SIGUSR1 have stoped server") if pid_file: with open(pid_file, "wb") as fd: fd.write("0")
# blinker已经被用在多个项目上,如是flask和django,而python-message则支持更多丰富的特性 # message模块是laiyonghao自己写的,原来只能用在python2.x,我抽出来改写了__init__.py使其能应用在python3.5上 # 以下例子是用message解耦,满足不同日志输出 import message LOG_MSG = ('log', 'foo') def bar(): """重要函数,给外部调用者使用,执行前先打印些信息,方便调试查看""" message.pub(LOG_MSG, 'Haha, Calling bar().') # do_sth() # 以下代码是在别的文件调用 """ ## 使用者在console直接输出调试信息 import message import suggestion52 def handle_foo_log_msg(txt): print(txt) message.sub(suggestion52.LOG_MSG, handle_foo_log_msg) suggestion52.bar() ## 使用者在logging中输出日志信息 import message import suggestion52 def handle_foo_log_msg(txt):
def __init__(self, parent): wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=u"自动化测试Server模拟器", pos=wx.DefaultPosition, size=wx.Size(1024, 768), style=wx.CLOSE_BOX | wx.DEFAULT_FRAME_STYLE | wx.MAXIMIZE | wx.MAXIMIZE_BOX | wx.MINIMIZE | wx.TAB_TRAVERSAL) self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) bSizer1 = wx.BoxSizer(wx.VERTICAL) self.m_panel = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer121 = wx.BoxSizer(wx.VERTICAL) sbSizer3 = wx.StaticBoxSizer(wx.StaticBox(self.m_panel, wx.ID_ANY, u"发送框"), wx.VERTICAL) bSizer5 = wx.BoxSizer(wx.VERTICAL) self.m_txtSend = wx.TextCtrl(sbSizer3.GetStaticBox(), wx.ID_ANY, style=wx.TE_MULTILINE | wx.TE_RICH2 | wx.ALIGN_LEFT | wx.TE_BESTWRAP) bSizer5.Add(self.m_txtSend, 1, wx.ALL | wx.EXPAND, 5) sbSizer3.Add(bSizer5, 1, wx.EXPAND, 5) bSizer6 = wx.BoxSizer(wx.HORIZONTAL) bSizer7 = wx.BoxSizer(wx.HORIZONTAL) bSizer7.AddSpacer((0, 0), 1, wx.EXPAND, 5) bSizer6.Add(bSizer7, 1, wx.EXPAND, 5) bSizerBtnRunTask = wx.BoxSizer(wx.HORIZONTAL) self.m_btnRunTask = wx.Button(sbSizer3.GetStaticBox(), wx.ID_ANY, u"RunTask", wx.DefaultPosition, wx.DefaultSize, 0) bSizerBtnRunTask.Add(self.m_btnRunTask, 0, wx.ALL, 5) bSizer6.Add(bSizerBtnRunTask, 0, wx.EXPAND, 5) bSizer8 = wx.BoxSizer(wx.HORIZONTAL) m_cmbAgentChoices = [] self.m_cmbAgent = wx.ComboBox(sbSizer3.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, m_cmbAgentChoices, 0) bSizer8.Add(self.m_cmbAgent, 0, wx.ALL, 5) bSizer6.Add(bSizer8, 0, wx.EXPAND, 5) bSizer9 = wx.BoxSizer(wx.HORIZONTAL) self.m_btnSend = wx.Button(sbSizer3.GetStaticBox(), wx.ID_ANY, u"Send", wx.DefaultPosition, wx.DefaultSize, 0) bSizer9.Add(self.m_btnSend, 0, wx.ALL, 5) bSizer6.Add(bSizer9, 0, wx.EXPAND, 5) sbSizer3.Add(bSizer6, 0, wx.EXPAND, 5) bSizer121.Add(sbSizer3, 3, wx.EXPAND, 5) sbSizer4 = wx.StaticBoxSizer(wx.StaticBox(self.m_panel, wx.ID_ANY, u"接收框"), wx.VERTICAL) bSizer10 = wx.BoxSizer(wx.VERTICAL) self.m_txtRecv = wx.TextCtrl(sbSizer4.GetStaticBox(), wx.ID_ANY, style=wx.TE_MULTILINE | wx.TE_RICH2 | wx.ALIGN_LEFT | wx.HSCROLL | wx.TE_WORDWRAP) bSizer10.Add(self.m_txtRecv, 1, wx.ALL | wx.EXPAND, 5) sbSizer4.Add(bSizer10, 1, wx.EXPAND, 5) bSizer11 = wx.BoxSizer(wx.HORIZONTAL) bSizer12 = wx.BoxSizer(wx.HORIZONTAL) bSizer12.AddSpacer((0, 0), 1, wx.EXPAND, 5) bSizer11.Add(bSizer12, 1, wx.EXPAND, 5) bSizer13 = wx.BoxSizer(wx.HORIZONTAL) self.m_checkNoHB = wx.CheckBox(sbSizer4.GetStaticBox(), wx.ID_ANY, u"屏蔽心跳消息", wx.DefaultPosition, wx.DefaultSize, 0) bSizer13.Add(self.m_checkNoHB, 0, wx.ALL, 5) bSizer11.Add(bSizer13, 0, wx.EXPAND, 5) sbSizer4.Add(bSizer11, 0, wx.EXPAND, 5) bSizer121.Add(sbSizer4, 1, wx.EXPAND, 5) self.m_panel.SetSizer(bSizer121) self.m_panel.Layout() bSizer121.Fit(self.m_panel) bSizer1.Add(self.m_panel, 1, wx.EXPAND | wx.ALL, 5) self.SetSizer(bSizer1) self.Layout() self.Centre(wx.BOTH) message.sub(gl.RECEIVE_DATA_EVENT, self.receiveMsg) self._mqserver = MQServer.MQServer() self._mqserver.setDaemon(True) self._mqserver.start() # 客户端信息 self._client_list = {} # {"client_id":("state","last-live-time")} # 任务处理 self._taskThread = task.task(self._mqserver) self._monitorTaskThread = threading.Thread(target=self.monitorTask) self.__exitMonitorTask = False self._taskThread.setDaemon(True) self._taskThread.start() self.m_btnSend.Bind(wx.EVT_BUTTON, self.OnSendButtonClick) self.m_btnRunTask.Bind(wx.EVT_BUTTON, self.OnRunTaskButtonClick)
def subscribe(self, topic, callback, front = False): message.sub(topic, callback, front)