def cas_init(): cas = CAS() app = getAppMgr().get('flaskApp') cas.init_app(app=app) app.config['CAS_SERVER'] = 'https://cas.banggood.cn/cas/login' app.config['CAS_AFTER_LOGIN'] = '******' getAppMgr().insert('cas', cas)
def init_Admin(): app = getAppMgr().get('flaskApp') db = getAppMgr().get('sqlAlchemyDB').getDB() admin = Admin(app, template_mode='bootstrap3') admin.add_view(MyView('my view')) admin.add_view(UserView(getAppMgr().get('User'), db.session)) path = op.join(op.dirname(__file__), 'static') admin.add_view(FileAdmin(path, '/static/', name='Static Files')) getAppMgr().insert('admin', admin)
def __flaskAPIfunc(self, queue, flaskQueue): loggerInfo.info('flaskAPI进程拉起成功') self.queue = queue self.flaskQueue = flaskQueue getAppMgr().insert('flask-queue', queue) getAppMgr().insert('flask-flaskQueue', flaskQueue) try: flaskApi.run(self.queue, self.flaskQueue, True) except: loggerInfo.info('flaskAPI业务启动失败')
def index(self): print('==========' * 4) username = getAppMgr().get('cas').username, print(username) # display_name = getCAS().attributes['cas:displayName'] # print(display_name) print('==========' * 4) return 'hello'
def init(): app.config['SESSION_TYPE'] = 'filesystem' app.config['SECRET_KEY'] = os.urandom(24) getAppMgr().get('sqlAlchemyDB').sqlDB_init() getAppMgr().get('mycas').cas_init() getAppMgr().get('ApiServerAdmin').init_Admin()
def rigister(): testApi = testRequestHandler() getAppMgr().get('RequestHandlerMgr').register(testApi) adApi = AdComposingApiRequestHandler() getAppMgr().get('RequestHandlerMgr').register(adApi) loginApi = LoginApiRequestHandler() getAppMgr().get('RequestHandlerMgr').register(loginApi)
def __taskRun(self, queue): loggerInfo.info('__taskRun 业务队列管理进程成功拉起,尝试拉起进程池') try: self.queue = queue self.pool = multiprocessing.Pool( processes=parameters.QUEUE_TASK_COUNT) loggerInfo.info('业务进程池拉起成功,开始分发业务') except: loggerInfo.info('业务进程池拉起失败') self.pool = None self.taskPoolMgr = None loggerInfo.info("开始业务循环派发(从消息队列中取消息)") while True: loggerInfo.info("获取消息队列中的一个消息") data = self.queue.get() loggerInfo.debug("消息:" + str(data)) loggerInfo.info("获取消息结束") loggerInfo.info("发送消息到具体业务处理方法") self.pool.apply_async(getAppMgr().get('taskQueue').run, (data, )) loggerInfo.info("业务处理结束")
from flask_cas import CAS from app.app import getAppMgr class mycas(object): @staticmethod def cas_init(): cas = CAS() app = getAppMgr().get('flaskApp') cas.init_app(app=app) app.config['CAS_SERVER'] = 'https://cas.banggood.cn/cas/login' app.config['CAS_AFTER_LOGIN'] = '******' getAppMgr().insert('cas', cas) getAppMgr().insert('mycas', mycas)
#建议用tornado与gevent封装flask,以添加并发能力 from flask_api import FlaskAPI, status, exceptions from flask import request, url_for import os from flask_cas import login_required import server import server.flask.ApiServerTornado from app.app import getAppMgr try: loggerInfo = getAppMgr().get('log') except: import logging loggerInfo = logging.getLogger() app = FlaskAPI(__name__) getAppMgr().insert('flaskApp', app) task_queue = None requestHandMgr = getAppMgr().get('RequestHandlerMgr') class flaskApi(object): @staticmethod def init(): app.config['SESSION_TYPE'] = 'filesystem' app.config['SECRET_KEY'] = os.urandom(24) getAppMgr().get('sqlAlchemyDB').sqlDB_init()
from app.app import getAppMgr parser = argparse.ArgumentParser(description="广告系统系统参数帮助") parser.add_argument("-s", "--stop", help="停止广告服务器", action="store_true") parser.add_argument("-r", "--run", help="启动广告服务器", action="store_true") parser.add_argument("-e", "--echo", help="显示一些位置执行命令等信息", action="store_true") args = parser.parse_args() runStr = 'source activate apiServer && nohup python ' + str(sys.path[0]) + '/main.py >/dev/null &' if args.stop: os.system("ps -ef|grep serverMgr.py|grep -v grep|grep wangxin|grep python|awk '{print $2}'|xargs kill -9") if args.run: os.system("ps -ef|grep serverMgr.py|grep -v grep|grep wangxin|grep python|awk '{print $2}'|xargs kill -9") os.system(runStr) if args.echo: print('-'*50) print('server path ==> %s'%str(sys.path[0])) print('run server cmd ==> %s'%runStr) print('-'*50) print('env cmd ==> source activate apiServer') print('-'*50) if __name__ == '__main__': getAppMgr().get('multiprocessManagementRun')()
from app.app import getAppMgr loggerInfo = getAppMgr().get('log') class RequestHandlerBase(object): def init(self, key, request): self.key = key self.request = request def run(self, key, request): return None def pushData(self,data): tempData = {} tempData['key'] = self.key tempData['data'] = data getAppMgr().get('push_queue')(tempData) def taskQueue(self, data): loggerInfo.warning('没有复写taskQueue函数处理离线业务 key = %s, data = %s'%(str(self.key), str(data))) return None getAppMgr().insert('RequestHandlerBase', RequestHandlerBase)
def pushData(self,data): tempData = {} tempData['key'] = self.key tempData['data'] = data getAppMgr().get('push_queue')(tempData)
def __repr__(self): return '<User %r>' % self.username class sqlAlchemyDB(object): @staticmethod def sqlDB_init(): app = getAppMgr().get('flaskApp') app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////Volumes/work/3.code/APIServer/tmp/test.db' db.init_app(app) @staticmethod def getDB(): return db getAppMgr().insert('User',User) getAppMgr().insert('sqlAlchemyDB', sqlAlchemyDB) ''' 例子 db.create_all() admin = User('admin', '*****@*****.**') guest = User('guest', '*****@*****.**') db.session.add(admin) db.session.add(guest) db.session.commit() User.query.all() User.query.filter_by(username='******').first() '''
def sqlDB_init(): app = getAppMgr().get('flaskApp') app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////Volumes/work/3.code/APIServer/tmp/test.db' db.init_app(app)
from app.app import getAppMgr class TaskQueue(object): @staticmethod def run(data): getAppMgr().get('RequestHandlerMgr').setTaskQueue(data) getAppMgr().get('log').warning('data:' + str(data)) getAppMgr().insert('taskQueue', TaskQueue)
def run(data): getAppMgr().get('RequestHandlerMgr').setTaskQueue(data) getAppMgr().get('log').warning('data:' + str(data))
import os from app.app import getAppMgr path = os.path.join(os.path.abspath(".")) getAppMgr().insert('path', path) dbpath = path + 'db/' getAppMgr().insert('dbpath', dbpath)
desc = \ { "siteflag":0, "sku":"SKU623093", "product_id":"996086", "cat_path":"892,1985,5146,5150", "title":"5Pcs Multipurpose Blackhead Acne Comedone Extractor Remover Stainless Steel Tool Set Kit", "description":"Material: Stainless Steel Tools Color: Silver Case Color: Black Weight: App 89g Size: As seen from the pictures", "language":"en", "urlCallback":"处理完业务后调用的回调url,可以自己随意填,通过自己制定url的方式给自己传递某些信息等,例如获取这是哪一个广告的处理返回数据" } notes = { 'googleTitleptimize': '<谷歌广告优化接口>事例:(引号需要改成双引号)' + str(desc), 'getAdText': '<获取广告文本接口>get请求参数(暂时不支持post):?sku=skuxxx&doman=1', 'test': 'test', 'adComposingApi':'广告组装api' } from app.app import getAppMgr getAppMgr().insert('desc', desc) getAppMgr().insert('notes', notes)
#标准模块 import time import multiprocessing from app.app import getAppMgr from server.flask.flaskAPIServer import flaskApi loggerInfo = getAppMgr().get('log') #个人模块 from server.config import parameters class multiprocessManagementObj(object): def __init__(self): self.queue = multiprocessing.Queue() self.flaskQueue = multiprocessing.Queue() self.flaskProcessing = [] self.taskPoolMgr = None self.pool = None self.nginxPort = parameters.NGINX_PORT def __flaskAPIfunc(self, queue, flaskQueue): loggerInfo.info('flaskAPI进程拉起成功') self.queue = queue self.flaskQueue = flaskQueue getAppMgr().insert('flask-queue', queue) getAppMgr().insert('flask-flaskQueue', flaskQueue) try: flaskApi.run(self.queue, self.flaskQueue, True)
def _singleton(*args, **kargs): if cls not in _instance: _instance[cls] = cls(*args, **kargs) return _instance[cls] return _singleton @Singleton class RequestHandlerMgr(object): def __init__(self): self.RequestHandlerList = [] def register(self, classRequestHandler): self.RequestHandlerList.append(classRequestHandler) def getResponseData(self, key, request): for hd in self.RequestHandlerList: data = None if hd.key == key: data = hd.run(key, request) if not data is None: return data return None def setTaskQueue(self, data): for hd in self.RequestHandlerList: if data['key'] == hd.key: hd.taskQueue(data['data']) # getAppMgr().get('rigister').rigister() getAppMgr().insert('RequestHandlerMgr',RequestHandlerMgr())
def init(): getAppMgr().insert('rigister', RequestRigister)
from app.app import getAppMgr loggerInfo = getAppMgr().get('log') RequestHandlerBase = getAppMgr().get('RequestHandlerBase') class LoginApiRequestHandler(RequestHandlerBase): def __init__(self): RequestHandlerBase.init(self, "login", None) def run(self, key, request): return {"Message": "接收到数据" + str(request.data), "Code": 0, "Succeed": True, 'V': 1.0, "data": str(request.args)} def taskQueue(self, data): print("hahahah 我处理了这个离线任务 data=%s"%str(data))
#这三个变量定义管理员是否可以增删改,默认为True can_delete = False can_edit = True can_create = True #这里是为了自定义显示的column名字 def __init__(self, User, session, **kwargs): # You can pass name and other parameters if you want to super(UserView, self).__init__(User, session, **kwargs) column_labels = dict( username='******', # id='id', mail='email') class ApiServerAdmin(object): @staticmethod def init_Admin(): app = getAppMgr().get('flaskApp') db = getAppMgr().get('sqlAlchemyDB').getDB() admin = Admin(app, template_mode='bootstrap3') admin.add_view(MyView('my view')) admin.add_view(UserView(getAppMgr().get('User'), db.session)) path = op.join(op.dirname(__file__), 'static') admin.add_view(FileAdmin(path, '/static/', name='Static Files')) getAppMgr().insert('admin', admin) getAppMgr().insert('ApiServerAdmin', ApiServerAdmin)