(self, config, servername=None, dbconfig=None,
                memconfig=None, masterconf=None)
配置服务器
配置服务器
配置服务器
def config(self, config, servername=None, dbconfig=None,
                memconfig=None, masterconf=None):
        '''配置服务器
        '''
        GlobalObject().json_config = config
        GlobalObject().remote_connect = self.remote_connect
        netport = config.get('netport')#客户端连接
        webport = config.get('webport')#http连接
        rootport = config.get('rootport')#root节点配置
        self.remoteportlist = config.get('remoteport',[])#remote节点配置列表
        if not servername:
            servername = config.get('name')#服务器名称
        logpath = config.get('log')#日志
        hasdb = config.get('db')#数据库连接
        hasmem = config.get('mem')#memcached连接
        app = config.get('app')#入口模块名称
        cpuid = config.get('cpu')#绑定cpu
        mreload = config.get('reload')#重新加载模块名称
        self.servername = servername
            
        if netport:
            self.netfactory = LiberateFactory()
            netservice = services.CommandService("netservice")
            self.netfactory.addServiceChannel(netservice)
            reactor.listenTCP(netport,self.netfactory)
            
        if webport:
            self.webroot = Flask("servername")
            GlobalObject().webroot = self.webroot
            reactor.listenWSGI(webport, self.webroot)
            
        if rootport:
            self.root = PBRoot()
            rootservice = services.Service("rootservice")
            self.root.addServiceChannel(rootservice)
            reactor.listenTCP(rootport, BilateralFactory(self.root))
            
        for cnf in self.remoteportlist:
            rname = cnf.get('rootname')
            self.remote[rname] = RemoteObject(self.servername)
            
        if hasdb and dbconfig:
            if dbconfig.has_key("user") and dbconfig.has_key("host") and dbconfig.has_key("host"):
                dbpool.initPool({"default":dbconfig})
            else:
                dbpool.initPool(dbconfig)
            
        if hasmem and memconfig:
            urls = memconfig.get('urls')
#             hostname = str(memconfig.get('hostname'))
            memcached_connect(urls)
            from gfirefly.dbentrust.util import M2DB_PORT,M2DB_HOST,ToDBAddress
            ToDBAddress().setToDBHost(memconfig.get("pubhost",M2DB_HOST))
            ToDBAddress().setToDBPort(memconfig.get("pubport",M2DB_PORT))
            
        if logpath:
            log.addObserver(loogoo(logpath))#日志处理
        log.startLogging(sys.stdout)
        
        if cpuid:
            affinity.set_process_affinity_mask(os.getpid(), cpuid)
        GlobalObject().config(netfactory = self.netfactory, root=self.root,
                    remote = self.remote)
        
        if app:
            __import__(app)
        if mreload:
            _path_list = mreload.split(".")
            GlobalObject().reloadmodule = __import__(mreload,fromlist=_path_list[:1])
        
        if masterconf:
            masterport = masterconf.get('rootport')
            masterhost = masterconf.get('roothost')
            self.master_remote = RemoteObject(servername)
            GlobalObject().masterremote = self.master_remote
            import admin
            addr = ('localhost',masterport) if not masterhost else (masterhost,masterport)
            self.master_remote.connect(addr)
def config ( self , config , servername = None , dbconfig = None , memconfig = None , masterconf = None ) : GlobalObject ( ) . json_config = config GlobalObject ( ) . remote_connect = self . remote_connect netport = config . get ( 'netport' ) #客户端连接 webport = config . get ( 'webport' ) #http连接 rootport = config . get ( 'rootport' ) #root节点配置 self . remoteportlist = config . get ( 'remoteport' , [ ] ) #remote节点配置列表 if not servername : servername = config . get ( 'name' ) #服务器名称 logpath = config . get ( 'log' ) #日志 hasdb = config . get ( 'db' ) #数据库连接 hasmem = config . get ( 'mem' ) #memcached连接 app = config . get ( 'app' ) #入口模块名称 cpuid = config . get ( 'cpu' ) #绑定cpu mreload = config . get ( 'reload' ) #重新加载模块名称 self . servername = servername if netport : self . netfactory = LiberateFactory ( ) netservice = services . CommandService ( "netservice" ) self . netfactory . addServiceChannel ( netservice ) reactor . listenTCP ( netport , self . netfactory ) if webport : self . webroot = Flask ( "servername" ) GlobalObject ( ) . webroot = self . webroot reactor . listenWSGI ( webport , self . webroot ) if rootport : self . root = PBRoot ( ) rootservice = services . Service ( "rootservice" ) self . root . addServiceChannel ( rootservice ) reactor . listenTCP ( rootport , BilateralFactory ( self . root ) ) for cnf in self . remoteportlist : rname = cnf . get ( 'rootname' ) self . remote [ rname ] = RemoteObject ( self . servername ) if hasdb and dbconfig : if dbconfig . has_key ( "user" ) and dbconfig . has_key ( "host" ) and dbconfig . has_key ( "host" ) : dbpool . initPool ( { "default" : dbconfig } ) else : dbpool . initPool ( dbconfig ) if hasmem and memconfig : urls = memconfig . get ( 'urls' ) #             hostname = str(memconfig.get('hostname')) memcached_connect ( urls ) from gfirefly . dbentrust . util import M2DB_PORT , M2DB_HOST , ToDBAddress ToDBAddress ( ) . setToDBHost ( memconfig . get ( "pubhost" , M2DB_HOST ) ) ToDBAddress ( ) . setToDBPort ( memconfig . get ( "pubport" , M2DB_PORT ) ) if logpath : log . addObserver ( loogoo ( logpath ) ) #日志处理 log . startLogging ( sys . stdout ) if cpuid : affinity . set_process_affinity_mask ( os . getpid ( ) , cpuid ) GlobalObject ( ) . config ( netfactory = self . netfactory , root = self . root , remote = self . remote ) if app : __import__ ( app ) if mreload : _path_list = mreload . split ( "." ) GlobalObject ( ) . reloadmodule = __import__ ( mreload , fromlist = _path_list [ : 1 ] ) if masterconf : masterport = masterconf . get ( 'rootport' ) masterhost = masterconf . get ( 'roothost' ) self . master_remote = RemoteObject ( servername ) GlobalObject ( ) . masterremote = self . master_remote import admin addr = ( 'localhost' , masterport ) if not masterhost else ( masterhost , masterport ) self . master_remote . connect ( addr )