예제 #1
0
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()
예제 #2
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)
    #===========================================================
    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')
예제 #3
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()
예제 #4
0
파일: battleway.py 프로젝트: fycheung/misc
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')
예제 #5
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()
예제 #6
0
    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
예제 #7
0
#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')

#声明一个话题
예제 #8
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')
예제 #9
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)
예제 #10
0
파일: gateway.py 프로젝트: fycheung/misc
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')
예제 #11
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")
예제 #12
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):
예제 #13
0
    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)
예제 #14
0
 def subscribe(self, topic, callback, front = False):
     message.sub(topic, callback, front)