当前位置: 首页>>代码示例>>Python>>正文


Python Status.inc方法代码示例

本文整理汇总了Python中status.Status.inc方法的典型用法代码示例。如果您正苦于以下问题:Python Status.inc方法的具体用法?Python Status.inc怎么用?Python Status.inc使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在status.Status的用法示例。


在下文中一共展示了Status.inc方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: CacheServer

# 需要导入模块: from status import Status [as 别名]
# 或者: from status.Status import inc [as 别名]
class CacheServer(TCPServer):
    """
    缓存服务器
    """
    status_fields = [
        'total_commands_processed',         # 0
        'connected_clients',                # 1
        'all_clients',                      # 2
        'total_connections_received',       # 3
        'total_connections_send',           # 4
        'slave_sync_rate',                  # 5
        'slave_sync_ok',                    # 6
    ]

    def __init__(self, config):
        self.config = config                                                    # 应用程序配置
        self.connections = 0                                                    # 连接客户端列表

        if self.config['savetime'] != 0:    # 不保存数据
            self.thread = PeriodicCallback(self.save_db,
                                       int(self.config['savetime']) * 1000)
            self.thread.start()                                                 # 背景保存服务线程启动

        self.workpool = ThreadPool(int(config['work_pool']))                    # 工作线程池

        self.status = Status(CacheServer.status_fields)                         # 服务器状态
        self.slave_clients = {}                                                 # 同步客户端
        self.is_sync = False                                                    # 是否在同步

        if self.config['master'] is not None:                                   # 从服务器启动
            shutil.rmtree(config['db'])
            self.master_server = PyCachedClient(self.config['master'][0],
                                                self.config['master'][1])
            self.master_server.sync(self.config['port'])
            self.slavepool = None
            self.slave = True                                                   # 是否为Slave模式
        else:                                                                   # 主服务器启动, 需要启动从命令工作线程

            self.slavepool = ThreadPool(int(config['slave_pool']))              # slave Command send pools
            self.slave = False                                                  # 是否为Slave模式

        self.memory = Memory(config['db'])                                      # 缓存服务类
        super(CacheServer, self).__init__()

    def handle_stream(self, stream, address):
        """
        有连接进入
        """
        if not self.is_sync:
            self.connections += 1
            ClientConnection(stream, self, address)
            self.status.inc(self.status_fields[1])
            self.status.inc(self.status_fields[2])
            logger.info("Client[%s] connection is success." % id(stream))
        else:
            logger.warn("Server sync mode don't connection")

    def close_stream(self, hashid):
        """
        客户端关闭连接
        """
        self.connections -= 0
        try:
            del self.slave_clients[hashid]
            logger.warn("Slave server[%s] leaving." % hashid)
        except KeyError:
            pass

        self.status.dec(self.status_fields[1])

        logger.info("Client[%s] connect is closed." % hashid)

    def save_db(self):
        """
        内存的数据保存到DB
        """
        self.memory.dump_db()
        
    def shutdown(self):
        """
        关闭服务器
        """
        logger.warn('PyCached server shutdown...')
        #gevent.wait()
        import os
        try:
            os.unlink(options.pid)
        except OSError:
            pass

        self.save_db()
开发者ID:eicesoft,项目名称:pycached,代码行数:93,代码来源:net.py


注:本文中的status.Status.inc方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。