AHServer
ahserver的Python项目详细描述
ahserver
ahserver是基于aiohttp异步框架的http(s)服务器。
AH服务器功能:
- 用户授权和身份验证支持
- https支持
- 注册文件类型的处理器
- 处理器可以调用预定义的变量和函数
- 多数据库连接和连接池
- 包装sql的简单方法
- 从存储在./conf/config.json的json文件配置数据
- 在config.filesroot文件夹下上载文件自动保存
- i18n支持
- 处理器包括:
- “.dspy”文件子修复程序由“.dspy”作为python脚本处理
- “.tmpl”的“tmpl”文件子修复是作为模板处理的
- “.md”文件子修复程序由“.md”作为标记文件处理
- “.xlsxds”的“xlsxds”文件子修复是作为来自xlsx文件的数据源处理的
- “.sqlds”子修复的“sqlds”文件通过sql命令作为数据库中的数据源进行处理
要求
参见requirements.txt
如何使用
参见ah.py
from ahserver.configuredServer import ConfiguredServer
if __name__ == '__main__':
server = ConfiguredServer()
server.run()
文件夹结构
- 应用程序
- |-ah.py
- |--ahserver
- |-形态
|-config.json
- |-I18N
配置文件内容
ahserver在其配置中使用json文件格式,下面是一个示例:
{
"databases":{
"aiocfae":{
"driver":"aiomysql",
"async_mode":true,
"coding":"utf8",
"dbname":"cfae",
"kwargs":{
"user":"test",
"db":"cfae",
"password":"test123",
"host":"localhost"
}
},
"cfae":{
"driver":"mysql.connector",
"coding":"utf8",
"dbname":"cfae",
"kwargs":{
"user":"test",
"db":"cfae",
"password":"test123",
"host":"localhost"
}
}
},
"website":{
"paths":[
["$[workdir]$/../usedpkgs/antd","/antd"],
["$[workdir]$/../wolon",""]
],
"host":"0.0.0.0",
"port":8080,
"coding":"utf-8",
"ssl":{
"crtfile":"$[workdir]$/conf/www.xxx.com.pem",
"keyfile":"$[workdir]$/conf/www.xxx.com.key"
},
"indexes":[
"index.html",
"index.tmpl",
"index.dspy",
"index.md"
],
"visualcoding":{
"default_root":"/samples/vc/test",
"userroot":{
"ymq":"/samples/vc/ymq",
"root":"/samples/vc/root"
},
"jrjpath":"/samples/vc/default"
},
"processors":[
[".xlsxds","xlsxds"],
[".sqlds","sqlds"],
[".tmpl.js","tmpl"],
[".tmpl.css","tmpl"],
[".html.tmpl","tmpl"],
[".tmpl","tmpl"],
[".dspy","dspy"],
[".md","md"]
]
},
"langMapping":{
"zh-Hans-CN":"zh-cn",
"zh-CN":"zh-cn",
"en-us":"en",
"en-US":"en"
}
}
数据库配置
用于数据库引擎的ahserver包是:
- 甲骨文:cx_甲骨文
- mysql:mysql连接器
- PostgreSQL:psycopg2
- SQL服务器:pymssql
但是,您可以更改它,但必须在数据库连接定义中更改“driver”值包名称。
在config.json的databases部分,您可以定义一个或多个数据库连接,而且它还支持许多数据库引擎,就像oracle、mysql、postgresql一样。 定义一个数据库连接,您需要遵循以下json格式。
- mysql或mariadb
"metadb":{
"driver":"mysql.connector",
"coding":"utf8",
"dbname":"sampledb",
"kwargs":{
"user":"user1",
"db":"sampledb",
"password":"user123",
"host":"localhost"
}
}
db name和“db”应该相同,这是mysql数据库中的数据库名
- 甲骨文
"db_ora":{
"driver":"cx_Oracle",
"coding":"utf8",
"dbname":sampledb",
"kwargs":{
"user":"user1",
"host":"localhost",
"dsn":"10.0.185.137:1521/SAMPLEDB"
}
}
- SQL Server
"db_mssql":{
"driver":"pymssql",
"coding":"utf8",
"dbname":"sampledb",
"kwargs":{
"user":"user1",
"database":"sampledb",
"password":"user123",
"server":"localhost",
"port":1433,
"charset":"utf8"
}
}
- PostgreSQL
"db_pg":{
"driver":"psycopg2",
"dbname":"testdb",
"coding":"utf8",
"kwargs":{
"database":"testdb",
"user":"postgres",
"password":"pass123",
"host":"127.0.0.1",
"port":"5432"
}
}
https支持
在config.json文件中,需要设置config.website.ssl(见上文)
网站配置
路径
ahserver可以为位于服务器文件系统的不同文件夹中的内容(静态文件、由其处理器呈现的动态内容)提供服务。 ahserver在config.json文件的“website”定义中按“path”列表指定的路径顺序查找由http url标识的内容
处理器
服务器使用的所有访问程序都必须在此列出。
主机
通过default,“0.0.0.0”
端口
默认情况下,8080
编码
使用“utf-8”的ahserver建议
langmapping
即使是同一种语言,浏览器也会发送不同的“接受语言”。因此,ahserver使用“lang mapping”定义将多个浏览器语言映射到同一个i18n文件
国际
ahserver在pyutils包的apppublic模块中使用mini18n来实现i18n支持
它将在workdir文件夹的i18n文件夹中按语言名称命名的文件夹中搜索ms*txt文件中的翻译文本,workdir是ahserver程序所在的文件夹或由命令行参数标识的文件夹。
性能
在此列出
处理器环境
当在处理器中编码时,ahserver为构建应用程序提供了一些环境方面的东西,有模块、函数、类和变量
模块:
- 时间
- 日期时间
- 随机
- json
功能:
- 配置值
- 不是
- 内景
- str
- 浮动
- 键入
- str2da公司te
- str2日期时间
- 当前时间
- uuid
- 运行SQL
- 运行sqlpaging
- runsqliterator
- runsqlresultfields
- 可得性
- gettablefields
- gettablePrimaryKey
- gettableforignkeys
- 文件夹信息
- abspath
- 请求2ns
- 积垢
- 数据2xlsx
- xlsxdata
- 打开文件
- I18N
- I18ndict
- absurl
- abspath
- 请求2ns
变量
- 资源
- 终端类型
课程
- args转换