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 .

构建过程中的步骤

  • 安装依赖项
  • 如果存在(/opt/Envox),删除以前的ValueLeNV DIR
  • 使用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" }
)

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

推荐PyPI第三方库


热门话题
Spring启动测试中的java MockBean注释导致NonuniqueBeandDefinitionException   java Spring Hateoas调试模板不能为null   递归培根游戏Java程序?   java在Android中保存少量数据(对象)的最简单方法是什么?   异常处理Java中finally块的要点是什么?   是java。util。货币真的是工厂方法模式吗?   java如何输入字符以停止循环   java如何对流的某些部分执行缩减操作   java new Gson()。单例类的toJson(object)返回null   java Itext泰米尔字体显示不正确   java运行时。getRuntime()。gpg命令不起作用的exec()   java如何在preparedstatemenet中将字符连接到SQL字符串   java将同一实体的多个表示形式与lazyload合并时出错   JavaSpring、Hibernate和JPA:在entitymanager上调用persist似乎并没有提交到数据库   java osgi r6服务。组成部分注释属性列表