小型、简单、异步的web框架

simio的Python项目详细描述


西米奥

Build Status

基于aiohttp的小型、简单、异步的pythonrestapi web框架。 支持自动招摇过市生成和后台工作人员。你需要做的就是配置配置!在

您可以看到simio here的应用程序示例。在

从simio开始:

  1. 安装simio
    pip install simio
    
  2. 启动项目 ^{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

Example of swagger

您可以在项目目录中找到原始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版本,所以准备好在次要版本中进行重大更新!!在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java随机填充2d数组   java运行时。getRuntime。带有长参数的exec(cmd)   java Minecraft无法放置自定义背景   java AChartEngine YAxis自定义标签区域边距和图表值为字符串?   泛型类的java类型安全错误   整数的java符号等价物。toBinaryString方法?   Java中数组列表的数组   java WebView应用程序在谷歌登录后显示空白屏幕   java从backback中删除特定片段   如果服务器不支持使用的协议,java JSSE是否实现回退?   java Sonarqube正在进行核心漏洞查找。如何解决   javajavax。jcr。UnsupportedPositionOperationException:testVersionable处的节点不可版本化   java在安卓中每隔X小时运行一次文件/函数,无需打开应用程序   java如何为磁盘持久性配置BigMemory?   java BufferWriter不转换383以上的整数   Java7交集类型:规范具体说明了什么?   Java:CollectionHow创建多列   java如何检测运算符的空白   java问题:在firebase中为导航栏中的第二个表单提交数据第一个表单工作正常。实际isse是连接Mainactivity中的另一个活动