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

pyutils

sqlor

如何使用

参见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转换

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

推荐PyPI第三方库


热门话题
java Android编程存储的图像在PC上的格式无效   安卓无法通过Java代码使按钮变宽   java在Spring事务中的行为差异需要新的和嵌套的传播   java如何在Ubuntu上构建javafuse?   java不支持Eclipse包包含javac。exe   读取大文件时java StAX解析器的xml问题   连接到mysql时java通信链路故障   java WebSphere web容器线程的最大线程状态为runnable   为什么我需要添加双引号来打印java中字符数组的第一个和最后一个元素   java Hibernate在更新现有父实体时不创建新的子实体   java创建JSON格式输出   java SonarQube与Eclipse   无法从静态上下文引用java非静态方法toString   java位集向后显示值?   java为什么maven不从TestClass生成源代码?   java在实践中,在catch块中抛出异常是否有用?   java如何通过FileinputStream添加还原设置功能   java复制记事本中的所有内容并粘贴到网页的文本区域