小型、简单、异步的web框架
simio的Python项目详细描述
西米奥
基于aiohttp的小型、简单、异步的pythonrestapi web框架。 支持自动招摇过市生成和后台工作人员。你需要做的就是配置配置!在
您可以看到simio here的应用程序示例。在
从simio开始:
- 安装simio
在pip install simio
- 启动项目 ^{pr2}$ 在
教程:
西米奥很简单!以下是一些示例:
运行应用程序
运行应用程序只需:
- 获取配置
config=get_config()
在 - 创建应用程序生成器
fromsimio.app.builderimportAppBuilderbuilder=AppBuilder(config)
在 - 构建并运行应用程序
app=builder.build_app(config)app.run()
在
经办人
只需将route
装饰器添加到从BaseHandler继承的处理程序中
importtrafaretastfromsimio.handler.baseimportBaseHandlerfromsimio.handler.utilsimportrouteRequestSchema=t.Dict({t.Key("some_number"):t.ToInt(gte=0)})@route(path="/v1/hello/{user_id}/")classExampleHandler(BaseHandler):asyncdefpost(self,example:RequestSchema,user_id:int):returnself.response({"id":user_id,"some_number":example["some_number"],})asyncdefget(self,user_id:int):returnself.response(f"Your id is {user_id}!")
大摇大摆
只需运行应用程序并打开:
0.0.0.0:8080/api/doc
您可以在项目目录中找到原始json文件
可以在配置中禁用招摇过市生成
工人和亲信
任何具有app
参数的异步函数都可以是worker
但是对于cron,app
应该是唯一的一个参数
你可以从应用程序访问记录器、客户端和其他一切
asyncdefping_worker(app:web.Application,sleep_time:int):app.logger.info('Work')awaitasyncio.sleep(sleep_time)asyncdefcron_job(app:web.Application):awaitapp[CLIENTS][MongoClient].db.collection.insert({"status":"alive"})defget_config():return{APP:{APP.name:"simio_app",},CLIENTS:{MongoClient:{"host":"localhost"}},WORKERS:{ping_worker:{"sleep_time":5}},CRONS:{"*/1 * * * *":(cron_job,),},}
客户
要注册您的客户,您只需…
Ofc!只需将它们添加到配置中
defget_config():return{APP:{APP.name:"simio_app",},CLIENTS:{MongoClient:{"host":"mongodb://localhost:27017"}},}
在handler中可以这样访问它们:
fromsimio.handler.baseimportBaseHandlerfromsimio.handler.utilsimportroutefromsimio.app.config_namesimportCLIENTS@route(path="/v1/hello_with_client/{user_id}/")classHandlerWithClient(BaseHandler):@propertydefmongo_client(self):returnself.app[CLIENTS][MongoClient]asyncdefpost(self,user_id:int):awaitself.mongo_client.db.coll.insert_one({"user":user_id})returnself.response({"id":user_id})
就这样!在
!!这是0.x版本,所以准备好在次要版本中进行重大更新!!在
- 项目
标签: