gFirefly 學習筆記 (一) - 了解 startmaster.py
来源:互联网 发布:知聊下载 编辑:程序博客网 时间:2024/06/05 19:45
起動gFirefly 流程
加載gfirefly, master.py
- 執行 startmaster.py -> 執行master.py
- 由config.json 讀取數服務器結構
- 加載了gfirefly, gtwisted, flask
- 起動master server
- GlobalObject() 中加入 json_config, root (PBroot), webroot (flask)
- 起動日志系統
- 監聽各動返回數據的端口 (webport, rootport)
- 使用cmd 起動 node 服務器
- 執行appmain.py (查看下一篇文章︰)
cmd 的內容如下︰
python appmain.py chatserver config.json
master.py 內容查看
#coding:utf8'''Created on 2013-8-2@author: lan (www.9miao.com)'''import subprocess,json,sysfrom gtwisted.core import reactorfrom gfirefly.utils import servicesfrom gfirefly.distributed.root import PBRoot,BilateralFactoryfrom gfirefly.server.globalobject import GlobalObjectfrom gtwisted.utils import logfrom gfirefly.server.logobj import loogoofrom flask import Flaskreactor = reactorMULTI_SERVER_MODE = 1SINGLE_SERVER_MODE = 2MASTER_SERVER_MODE = 3class Master: """ """ def __init__(self): """ """ self.configpath = None self.mainpath = None self.root = None self.webroot = None def config(self,configpath,mainpath): """ """ self.configpath = configpath self.mainpath = mainpath def masterapp(self): """ """ config = json.load(open(self.configpath,'r')) GlobalObject().json_config = config mastercnf = config.get('master') rootport = mastercnf.get('rootport') webport = mastercnf.get('webport') masterlog = mastercnf.get('log') self.root = PBRoot() rootservice = services.Service("rootservice") self.root.addServiceChannel(rootservice) self.webroot = Flask("master") GlobalObject().root = self.root GlobalObject().webroot = self.webroot # 日志系統 if masterlog: log.addObserver(loogoo(masterlog))#日志处理 log.startLogging(sys.stdout) import webapp import rootapp # 生成接收各服務器消息專用socket reactor.listenWSGI(webport, self.webroot) reactor.listenTCP(rootport, BilateralFactory(self.root)) def start(self): ''' ''' sys_args = sys.argv if len(sys_args)>2 and sys_args[1] == "single": server_name = sys_args[2] if server_name == "master": mode = MASTER_SERVER_MODE else: mode = SINGLE_SERVER_MODE else: mode = MULTI_SERVER_MODE server_name = "" if mode == MULTI_SERVER_MODE: self.masterapp() config = json.load(open(self.configpath,'r')) sersconf = config.get('servers') for sername in sersconf.keys(): cmds = 'python %s %s %s'%(self.mainpath,sername,self.configpath) subprocess.Popen(cmds,shell=True) reactor.run() elif mode == SINGLE_SERVER_MODE: config = json.load(open(self.configpath,'r')) sername = server_name cmds = 'python %s %s %s'%(self.mainpath,sername,self.configpath) subprocess.Popen(cmds,shell=True) else: self.masterapp() reactor.run()
0 0
- gFirefly 學習筆記 (一) - 了解 startmaster.py
- gFirefly 學習筆記 (二) - 了解 appmain.py
- py学习小记一
- androlyze.py使用方法【一】
- py练习一:登录接口
- vn.py初试(一)
- 6.Tornado RequestHandler和Application类---了解web.py文件
- [urls.py设置技巧]Django urls.py的了解与基本配置
- py
- py
- py
- py
- py
- py
- py
- Py
- 循序渐进了解SPRING(一)
- html 了解一
- 设计模式之策略模式(iOS开发,代码用Objective-C展示)
- 进程守护
- PHP 读取不到Cookies的可能原因分析
- struts2常用标签
- mongodb索引
- gFirefly 學習筆記 (一) - 了解 startmaster.py
- autotrace 例子
- java 异常
- float,double等精度丢失问题
- Android,iOS打开手机QQ与指定用户聊天界面
- Leetcode Best Time to Buy and Sell Stock IV(最大子段和)
- 向 COM 公开 .NET Framework 组件
- java免费发送邮件实现
- 处理各大浏览器的<input type="file">显示风格迥异的问题