Commit 45d223b9 authored by wanli's avatar wanli

Merge branch 'release' of ssh://47.105.117.50:2224/wanli/evm-store into release

parents 8d6a85a3 b1082fdb
# -*- coding: utf-8 -*-
import os
import multiprocessing
MODE = 'develop' # develop: 开发模式; production: 生产模式
class ProductionConfig(object):
EPK_DIR = "D:\\projects\\scriptiot\\evm_app_store_files\\epks"
UPLOAD_ROOT_DIR = "D:\\projects\\scriptiot\\evm_app_store_files"
UPLOAD_ALLOWED = set(['doc', 'docs', 'csv', 'xls', 'xlsx'])
BIND = '127.0.0.1:3001'
WORKERS = multiprocessing.cpu_count() * 2 + 1
WORKER_CONNECTIONS = 10000
BACKLOG = 64
TIMEOUT = 60
LOG_LEVEL = 'INFO'
LOG_DIR_PATH = os.path.join(os.path.dirname(__file__), 'logs')
LOG_FILE_MAX_BYTES = 1024 * 1024 * 100
LOG_FILE_BACKUP_COUNT = 10
PID_FILE = 'run.pid'
REDIS_HOST = '127.0.0.1'
REDIS_PORT = 6379
REDIS_PASSWORD = ''
REDIS_MAX_CONNECTIONS = 100
JWT_HEADER_NAME = 'Authorization'
JWT_HEADER_TYPE = 'Bearer'
JWT_SECRET_KEY = '6UdxRgs2hvWpTLmj027d5vt7dXXQX'
JWT_ACCESS_TOKEN_EXPIRES = 7200
JWT_REFRESH_TOKEN_EXPIRES = 1800
MYSQL_DB = 'qianjing_iot'
MYSQL_HOST = '127.0.0.1'
MYSQL_PORT = 3306
MYSQL_USER = 'debian-sys-maint'
MYSQL_PWD = 'XMigC2B2uugnv18y'
SQLALCHEMY_BINDS = {
'app-store': 'sqlite:///../test.db'
}
SQLALCHEMY_DATABASE_URI = 'sqlite:///../test.db'
def __init__(self):
super().__init__()
self.SQLALCHEMY_DATABASE_URI = 'sqlite:///../test.db'
class DevelopConfig(object):
EPK_DIR = "D:\\projects\\scriptiot\\evm_app_store_files\\epks"
UPLOAD_ROOT_DIR = "D:\\projects\\scriptiot\\evm_app_store_files"
UPLOAD_ALLOWED = set(['doc', 'docs', 'csv', 'xls', 'xlsx'])
BIND = '127.0.0.1:3001'
WORKERS = 2
WORKER_CONNECTIONS = 1000
BACKLOG = 64
TIMEOUT = 30
LOG_LEVEL = 'DEBUG'
LOG_DIR_PATH = os.path.join(os.path.dirname(__file__), 'logs')
LOG_FILE_MAX_BYTES = 1024 * 1024
LOG_FILE_BACKUP_COUNT = 1
PID_FILE = 'run.pid'
REDIS_HOST = '127.0.0.1'
REDIS_PORT = 6379
REDIS_PASSWORD = ''
REDIS_MAX_CONNECTIONS = 100
JWT_HEADER_NAME = 'Authorization'
JWT_HEADER_TYPE = 'Bearer'
JWT_SECRET_KEY = '6UdxRgs2hvWpTLmj027d5vt7dXXQX'
JWT_ACCESS_TOKEN_EXPIRES = 7200
JWT_REFRESH_TOKEN_EXPIRES = 1800
MYSQL_DB = 'qianjing_iot'
MYSQL_HOST = '127.0.0.1'
MYSQL_PORT = 3306
MYSQL_USER = 'debian-sys-maint'
MYSQL_PWD = 'XMigC2B2uugnv18y'
SQLALCHEMY_BINDS = {
'app-store': 'sqlite:///../evue-store.db'
}
SQLALCHEMY_DATABASE_URI = 'sqlite:///../evue-store.db'
SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_ECHO = False
def __init__(self):
super().__init__()
self.SQLALCHEMY_DATABASE_URI = 'sqlite:///../evue-store.db'
if MODE == 'production':
config = ProductionConfig()
else:
config = DevelopConfig()
......@@ -200,6 +200,8 @@ class AppReview(object):
return None, ResponseCode.APPLICATION_NOT_EXISTS
# 根据app找到EPK文件,读取出二进制数据,返回
if not app.download_url or len(app.download_url) == 0:
return None, ResponseCode.APPLICATION_URL_IS_NULL
target_file = Path(config.UPLOAD_ROOT_DIR).joinpath(app.download_url)
if not target_file.exists():
return None, ResponseCode.APPLICATION_NOT_EXISTS
......
This diff is collapsed.
'''
Author: your name
Date: 2021-07-15 09:33:39
LastEditTime: 2021-07-28 19:56:22
LastEditors: your name
Description: In User Settings Edit
FilePath: \evm-store\tools\build_out\manager.py
'''
'''
Author: your name
Date: 2021-06-15 17:40:09
LastEditTime: 2021-06-30 18:09:51
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath: \evm-store\tools\resources\manager.py
'''
# -*- coding: utf-8 -*-
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.web import Application, RequestHandler, FallbackHandler
from tornado.ioloop import IOLoop
from flask_script import Manager
from flask_migrate import Migrate
from application.app import create_app, db
from application.config import config
from views.monitor import DeviceMessageHandler, WatchHandler, NotifyHandler
# 根据配置初始化app
app = create_app(config)
......@@ -38,7 +24,6 @@ def run():
To use: python3 manager.py run
"""
# app.logger.setLevel(app.config.get('LOG_LEVEL', logging.INFO))
http_server = HTTPServer(WSGIContainer(app))
http_server.listen(int(port), address=host)
IOLoop.instance().start()
......@@ -49,8 +34,22 @@ def debug():
debug模式启动命令函数
To use: python3 manager.py debug
"""
wsgi_app = WSGIContainer(app)
application = Application([
(r"/api/v1/evm_store/monitor", DeviceMessageHandler),
(r"/api/v1/evm_store/watch", WatchHandler),
(r"/ws/v1/notify", NotifyHandler),
(r'.*', FallbackHandler, dict(fallback=wsgi_app))
])
application.listen(int(port), address=host)
IOLoop.current().start()
print("WebSocket Service Started......")
# app.logger.setLevel(logging.DEBUG)
app.run(debug=True, port=int(port), host=host)
# app.run(debug=True, port=int(port), host=host)
if __name__ == '__main__':
manager.run()
This diff is collapsed.
......@@ -25,6 +25,7 @@ from . import monitorEvm
from . import menu
from . import file
from . import openapi
from . import business
api_v1 = Blueprint('api_v1', __name__)
......@@ -65,6 +66,9 @@ api.add_resource(monitorImage.MonitorImageResourceList, '/monitorImage')
api.add_resource(monitorEvm.MonitorEvmResource, '/monitorEvm/<string:uuid>')
api.add_resource(monitorEvm.MonitorEvmResourceList, '/monitorEvm')
api.add_resource(business.NavigationList, '/business/navigation')
api.add_resource(business.StoreResource, '/business/application')
api.add_resource(menu.MenuList, '/menu')
api.add_resource(menu.Batch, '/menu/delete/batch')
api.add_resource(menu.Create, '/menu/create')
......
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import json
from pathlib import Path
from flask import current_app, jsonify, request
from flask_restful import Resource
from flask_restful.reqparse import RequestParser
from flask_jwt_extended import ( jwt_required, get_jwt_identity )
from application.signal_manager import signalManager
from models.monitorEvm import getListMonitorEvmSchema, getListMonitorEvmsSchema, getMonitorEvmSchema
from webcreator.log import logger
from webcreator.response import ResponseCode, response_result
class NavigationList(Resource):
def __init__(self):
self.parser = RequestParser()
def get(self):
self.parser.add_argument("page", type=int, location="args", default=1, required=False)
self.parser.add_argument("pageSize", type=int, location="args", default=15, required=False)
args = self.parser.parse_args()
try:
target_file = Path(__file__).parent.parent.joinpath("hao.360.cn.json")
data = target_file.read_text()
data = json.loads(data)
return response_result(ResponseCode.HTTP_SUCCESS, data=data)
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.HTTP_SERVER_ERROR)
class ApplicationResource(Resource):
def __init__(self):
self.parser = RequestParser()
def get(self, uuid):
self.parser.add_argument("page", type=int, location="args", default=1)
self.parser.add_argument("pageSize", type=int, location="args", default=15)
args = self.parser.parse_args()
try:
json_payload = request.json
print("========>", uuid, json_payload)
data = getMonitorEvmSchema.load(json_payload)
result, message = signalManager.actionGetMonitorEvm.emit(uuid, data)
if result:
json_dumps = getMonitorEvmSchema.dump(result)
return response_result(message, data=json_dumps)
return response_result(message)
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.HTTP_SERVER_ERROR)
class StoreResource(Resource):
def __init__(self):
self.parser = RequestParser()
def get(self, uuid):
self.parser.add_argument("page", type=int, location="args", default=1)
self.parser.add_argument("pageSize", type=int, location="args", default=15)
args = self.parser.parse_args()
try:
json_payload = request.json
print("========>", uuid, json_payload)
data = getMonitorEvmSchema.load(json_payload)
result, message = signalManager.actionGetMonitorEvm.emit(uuid, data)
if result:
json_dumps = getMonitorEvmSchema.dump(result)
return response_result(message, data=json_dumps)
return response_result(message)
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.HTTP_SERVER_ERROR)
......@@ -354,3 +354,4 @@ if __name__ == "__main__":
signal.signal(signal.SIGTERM, raise_graceful_exit)
tornado.ioloop.IOLoop.current().start()
print("WebSocket Service Started......")
......@@ -440,6 +440,7 @@ class LauncherResource(Resource):
result, message = signalManager.actionGetLauncher.emit(data)
if result:
logger.info(result.resolve())
ret = result.read_bytes()
# with open(result.resolve().as_posix(), "rb") as f:
# ret = f.read()
......@@ -448,6 +449,7 @@ class LauncherResource(Resource):
except ValidationError as e:
return response_result(ResponseCode.HTTP_INVAILD_REQUEST, data=e.messages)
except Exception as e:
traceback.print_exc()
data = None
if hasattr(e, 'args'):
data = e.args
......@@ -471,7 +473,7 @@ class AppListResource(Resource):
self.parser.add_argument(
"imei", type=str, location="json", required=False)
self.parser.add_argument(
"review", type=int, location="json", required=False)
"review", type=int, location="json", default=1, required=False)
self.parser.add_argument("category", type=str,
location="json", required=False)
args = self.parser.parse_args()
......@@ -491,7 +493,7 @@ class AppListResource(Resource):
t = item.to_dict()
t.update({'download': random.randint(1, 1000),
'like': random.randint(0, 100),
'meta_data': json.loads(item.meta_data)})
'meta_data': json.loads(item.meta_data) if item.meta_data else None})
dataList.append(t)
# result = getListAppsSchema.dumps(result)
......@@ -499,27 +501,32 @@ class AppListResource(Resource):
{
"uuid": 1,
"img": "music.png",
"title": "音乐"
"title": "音乐",
"url": "http://store.evmiot.com/uploads/store/music.png"
},
{
"uuid": 2,
"img": "movie.png",
"title": "视频"
"title": "视频",
"url": "http://store.evmiot.com/uploads/store/movie.png"
},
{
"uuid": 3,
"img": "camera.png",
"title": "相机"
"title": "相机",
"url": "http://store.evmiot.com/uploads/store/camera.png"
},
{
"uuid": 4,
"img": "voice.png",
"title": "语音"
"title": "语音",
"url": "http://store.evmiot.com/uploads/store/voice.png"
},
{
"uuid": 5,
"img": "tool.png",
"title": "工具"
"title": "工具",
"url": "http://store.evmiot.com/uploads/store/tool.png"
}
]
......
......@@ -90,6 +90,7 @@ class ResponseCode(object):
# 应用模块
APPLICATION_NOT_EXISTS = (3010001, 'application not exists')
APPLICATION_EXISTS = (3010002, 'application already exists')
APPLICATION_URL_IS_NULL = (3010003, 'application url null')
# 文件管理模块
FILE_NOT_EXISTS = (3010001, 'file not exists')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment