envoxy平台框架
envox的Python项目详细描述
envoxy平台框架
envoxy是一种不同的api rest框架和应用程序后台程序,我们正试图使用所有最好的工具和技术,将它们的所有功能和性能结合起来,使所有平台都能在一个独特的框架中运行,从而允许与:
- zapata使用(zeromq/upnp);
- rabbitmq使用(mqtt/amqp);
- 芹菜;
- couchdb;
- PostgreSQL;
生成envoxy d(envoxy守护进程)和envoxy python包:
什么是envoxyd
?它是一个使用嵌入式uwsgi的进程守护进程,定制为能够使用envoxy
结构和api引导我们的模块。
$ make install
或使用Docker
$ docker build -t envoxy .
构建过程中的步骤
- 安装依赖项
- 使用python3.6版本创建干净的virtualenv(/opt/envoxy)并激活
- 授予当前用户对virtualenv dir的权限
- 安装envoxy:
python setup install
- 准备envoxyd文件:
- 删除src dir(供应商/src)
- 创建envoxyd src dir并创建一个干净的uwsgi副本
- 复制envoxyd文件以自定义uwsgi
- 安装envoxyd:
python setup install
将包准备到pypi存储库
$ make packages
包装过程中的步骤
- 安装过程
- 为两个包创建源分发:
python3 setup.py sdist bdist_wheel
发布到pypi存储库
关于envoxy的项目根目录和envoxyd
- 确保已创建
build
目录 build
目录必须包含当前版本的.whl
和.tar.gz
envoxy-0.0.2-py3-none-any.whl
envoxy-0.0.2.tar.gz
- 使用tween命令上载当前包,并输入您在真实pypi上注册的帐户的凭据。
$ twine upload dist/*
运行envoxyd
$ envoxyd --http :8080 --set conf=/path/to/confs/envoxy.json
如何使用envoxy
创建新项目
$ envoxy-cli --create-project --name my-container
如何用docker构建envoxy
$ docker build --no-cache -t envoxy-ubuntu:18.04 -f envoxy-ubuntu.Dockerfile .
$ docker build -t envoxy .
< H1>使用现有的项目路径作为卷$ docker run -it -d -p 8080:8080 -v /path/to/project:/home/envoxy -v /path/to/plugins:/usr/envoxy/plugins envoxy
PostgreSQL连接器示例
选择查询
from envoxy import pgsqlc
result = pgsqlc.query(
"db_name",
"select * from sample_table where id = 1;"
)
插入语句和事务块
from envoxy import pgsqlc
with pgsqlc.transaction('db_name') as db_conn:
r = db_conn.query(
sql="select * from sample_table limit 2"
)
db_conn.insert('sample_table2', {
"field1": "test",
"field2": "test",
"id": 1
})
all inserts语句必须放在事务块中
couchdb连接器示例
查找
有效选择器:eq、gt、gte、lt、lte fields:如果定义,则只返回此字段,否则将返回所有字段
from envoxy import couchdbc
perms = couchdbc.find(
db="server_key.db_name",
fields=["id", "field2"]
params={
"id": "1234"
"field1__gt": "2345"
}
)
获取
按ID获取文档
from envoxy import couchdbc
perms = couchdbc.get(
"005r9odyj91dw0y1ho32lvzh5r2avzngvrouyj",
db="server_key.db_name",
)
MQTT连接器示例
发布
from envoxy import mqttc
mqttc.publish(
'server_key',
'/v3/topic/channel',
{ "data": "test" },
no_envelope=True)
订阅
from envoxy import mqttc
mqttc.subscribe(
'server_key',
'/v3/topic/channels/#',
callback
)
打开事件
from envoxy import on
from envoxy.decorators import log_event
@on(endpoint='/v3/topic/channels/#', protocols=['mqtt'], server='server_key')
class MqttViewCtrl(View):
@log_event
def on_event(self, data, **kwargs):
do_stuff(data)
客户机
from envoxy.mqtt.client import Client as MqttClient
credentials = {
"client_id": ":client_id"
"access_token": ":access_token"
}
conf = {
"myserver": {
"bind": "mqtt://localhost:8000",
"cert_path": "/usr/lib/ssl/certs/ca-certificates.crt"
}
}
mqtt_client = MqttClient(conf, credentials=credentials)
mqtt_cient.publish(
"myserver",
"/v3/topic/channel",
{ "data": "test" }
)