Пример #1
0
 def stop(self):
     """ 停止,必须保证异步的任务已经全部完成 """
     self.stoped = True
     lets = list(self._set_lets.keys())
     joinall(lets)
     log.warning('[store](%s) stop complete!', self.db_name)
     return True
Пример #2
0
def mydaemon(app):
    def gevent_set_signal_handlers(signal_handler_map):
        signals = {}
        for (signal_number, handler) in signal_handler_map.items():
            #gevent.signal have not params, but, signal handler want params(signal_number, stack_frame)
            if callable(handler):
                signals[signal_number] = signal_handler(
                    signal_number, handler, signal_number, None)
        app.signals = signals
        #use gevent signal to register terminate

    daemon.set_signal_handlers = gevent_set_signal_handlers

    myrunner = MyDaemonRunner(app)
    app.daemon_runner = myrunner
    #daemon.close_file_descriptor_if_open may be crack, don't use it
    myrunner.daemon_context.files_preserve = list(range(0, 1025))
    try:
        myrunner.do_action()
    except DaemonRunnerStopFailureError as err:
        log.exception('do_action')
        if not myrunner.pidfile.is_locked():
            print('pidfile no found, app is running?')
    except SystemExit as err:
        log.warning('app SystemExit:%s', err)
        raise
    except:
        log.exception('do_action')
Пример #3
0
 def getProcesserInfo(self):
     if self.rpc is None:
         log.warning('***getProcesserInfo error: player(%s).handler(%s) ?? handler(%s) rpc_is_None',
                  id(self.player) if self.player else None,
                  id(self.player._handler) if self.player else None,
                  id(self))
         return
     return self.rpc.getProcesserInfo()
Пример #4
0
 def close_socket(self):
     from gevent import socket
     if getattr(self, 'socket', None) is not None:
         try:
             log.warning('Http10WSGIHandler %s socket close',
                         self.client_address)
             self.socket._sock.close()
             self.socket.close()
         except socket.error:
             pass
Пример #5
0
 def call(self, fname, data, noresult=False, timeout=None):
     if self.rpc is None:
         log.warning('***send(fname=%s, data=%s) error: player(%s).handler(%s) ?? handler(%s) rpc_is_None', fname, data,
                  id(self.player) if self.player else None,
                  id(self.player._handler) if self.player else None,
                  id(self))
         return
     if self.DEBUG:
         log.debug('send-- fname %s, data %s', fname, data)
     self.rpc.call(fname, data, noresult=noresult, timeout=timeout)
Пример #6
0
 def _on_close(self, sub_proxy):
     """ 子进程断线 """
     if sub_proxy not in self.sub_proxys:
         raise ValueError('[MultiCell](%s) on_close call by other app',
                          self.name)
     pid = sub_proxy._sub_pid
     addr = sub_proxy._sub_addr
     log.warning('close app:pid=%s, app_name=%s, addr=%s', pid, self.name,
                 addr)
     self.sub_proxys.remove(sub_proxy)
     self.mgr.proc_mgr.kill_process(pid)
Пример #7
0
 def _on_close(self, sub_proxy):
     """ 子进程断线 """
     if sub_proxy != self.sub_proxy:
         raise ValueError('[SingleCell](%s) on_close call by other app',
                          self.name)
     pid = self.sub_proxy._sub_pid
     addr = self.sub_proxy._sub_addr
     log.warning('close app:pid=%s, app_name=%s, addr=%s', pid, self.name,
                 addr)
     self.mgr.proc_mgr.kill_process(pid)
     self.app = None
Пример #8
0
def aes_encrypt(data):
    global _aes_encrypt
    if _aes_encrypt is None:
        from corelib.aes import new_aes_encrypt
        key = config.GM_AESKEY
        if key is not None:
            _aes_encrypt = new_aes_encrypt(key)
        else:
            log.warning('*****client AES key no found!')
            return data
    return _aes_encrypt(data)
Пример #9
0
 def gw_close(self, rpc_gw):
     """ 网关断开 """
     svc = rpc_gw.get_service()
     close_gwid = getattr(svc, self.GWID)
     log.warning('网关(%s - %s)断开', rpc_gw.get_addr(), close_gwid)
     self.rpc_gws.pop(close_gwid)
     for key in self.processers.values():
         gwid, pid = key
         if gwid != close_gwid:
             continue
         p = self.del_process(gwid, pid)
         if p:
             spawn(p.close, client=False)
Пример #10
0
 def set(self, key, value, timeout=None):
     """ timeout:过期时间(单位秒),如果为0,不过期 """
     if timeout is None or timeout < 0:
         timeout = self.default_timeout
     if timeout > 0:
         timeout = time.time() + abs(timeout)
         self._times[key] = timeout
     self._caches[key] = (value, timeout)
     if len(self._caches) > self.size and \
         self._gc_time + self.gc_time < time.time():
         log.warning('TimeMemCache缓存(%s-%s)不足,开始清理缓存', self.name,
                     len(self._caches))
         spawn(self.gc)
         #sleep(0.01)
     return value
Пример #11
0
 def stop(self):
     if self.stoped:
         return
     self.stoped = True
     log.warning('管理进程开始退出')
     try:
         self.web_svr.stop()
         log.warning('管理进程:stop_game')
         self._stop_game()
         log.warning('管理进程:stop_frame')
         self.frame.stop()
     except:
         log.log_except()
     finally:
         self._waiter.set()
Пример #12
0
def main():
    #    admin_path = join(os.environ['ROOT_PATH'], 'serveradmin')
    log.warning("admin_path:::%s", config.admin_path)
    sys.path.insert(0, config.admin_path)
    app = Application()
    common.daemon(app)
Пример #13
0
 def reload_modules(self, module_name_list):
     log.warning('********app(%s) reload_modules*******', self.name)
     from corelib import xreload
     for module_name in module_name_list:
         xreload.reload_module(module_name)
     log.warning('********app(%s) reload_modules end!!!!*******', self.name)
Пример #14
0
 def terminate(self, signal_number, stack_frame):
     """ 收到关闭的信号,在主线程上抛出异常 """
     log.warning("Terminating on signal %r", signal_number)
     exception = SystemExit("Terminating on signal %(signal_number)r" %
                            vars())
     self._main_let.throw(exception)
Пример #15
0
def main():
#    admin_path = join(os.environ['ROOT_PATH'], 'serveradmin')
    log.warning("admin_path:::%s", config.admin_path)
    sys.path.insert(0, config.admin_path)
    app = Application()
    common.daemon(app)