在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
T-Rest
介绍基于Tornado结合asyncio的web mvc框架 依赖 Tornado SQLAlchemy pycryptodome pytz 等 软件架构tree -I '*svn|*node_module*|*git|py3|*.pyc|__pycache__|statics'.├── LICENSE├── Pipfile├── README.md├── applications│ ├── common│ │ ├── const.py│ │ ├── models│ │ │ └── *.py│ │ ├── assemblers│ │ │ └── *.py│ │ ├── services│ │ │ └── *.py│ │ └── utils.py│ ├── app1│ │ ├── handlers│ │ │ └── *.py│ │ ├── models│ │ │ └── *.py│ │ ├── modules.py│ │ ├── services│ │ │ └── *.py│ │ ├── assemblers│ │ │ └── *.py│ │ ├── templates│ │ │ └── */*.html│ │ └── utils.py│ └── app2│ └── app3├── configs│ ├── dev.yaml│ └── local.yaml├── datas│ ├── locales│ │ ├── en_US.csv│ │ └── zh_CN.csv│ ├── menu│ │ └── menu0.json│ ├── mysql│ │ └── *.sql│ ├── nginx_vhost.conf│ ├── production_deploy.md│ ├── supervisor_tornado.conf│ └── supervisord.conf├── logs│ └── *.log├── server.py└── tests └── *_test.py 软件架构说明
安装教程把下面一行代码放入Pipfile文件 [packages]下面
或者直接
或者
使用说明参考 下面Demo项目, 在项目根目录( ROOT_PATH )下面创建 server.py 文件 #!/usr/bin/env python# -*- coding: utf-8 -*-import osimport sysimport resourceresource.setrlimit(resource.RLIMIT_NOFILE, (10240, 9223372036854775807))from tornado.options import defineabs_file = os.path.abspath(sys.argv[0])ROOT_PATH = abs_file[:abs_file.rfind('/')]define('ROOT_PATH', ROOT_PATH)# 把当前目录添加到 sys.path 开头sys.path.insert(0, ROOT_PATH)from trest.webserver import runif __name__ == "__main__": try: server = run() except KeyboardInterrupt: sys.exit(0) 在 项目根目录( ROOT_PATH ) 下面创建 .env 文件 # RUNTIME_ENV is not one of the local, dev, test, or product# the colon must have Spaces around itRUNTIME_ENV : local run pipenv install --skip-lockpipenv shellpython server.py --port=5080python tests/app_demo/server.py --port=5081 f'{ROOT_PATH}/configs/{env}.yaml' demo like this ./tests/app_demo/configs/dev.yaml 开发约定Demo#!/usr/bin/env python# -*- coding: utf-8 -*-"""[description]"""from trest.router import putfrom trest.router import getfrom trest.router import postfrom trest.router import deletefrom trest.handler import Handlerfrom trest.exception import JsonErrorclass DemoHandler(Handler): @post('demo0') def add(self): return self.success(data = ['post', 'demo0'])class Demo1Handler(Handler): @post('demo1') def add(self): return self.success(data = ['post', 'demo1'])class Demo2Handler(Handler): @get('demo2') def get_demo2(self): return self.success(data = ['get', 'demo2', ]) @get('demo2') def get_demo2(self): return self.success(data = ['get', 'demo23', ]) @delete('demo3/(?P<id>\d*)') def del_demo3(self, id): return self.success(data = ['delete', 'demo3', id]) @delete('demo2/(?P<id>\d*)') def del_demo2(self, id): return self.success(data = ['delete', 'demo2', id]) API响应在任意的地方使用 raise JsonError from trest.exception import JsonErrorraise JsonError('msg')raise JsonError('msg', 0)raise JsonError('msg', 1, [])raise JsonError('msg', 1, [1,2,3]) 避免 master/slave 等术语
参与贡献
码云特技
|
请发表评论