Skip to main content

Sesam 微服务工具

项目描述

SesamUtils

构建状态

Python 模块,用于在为 Sesam 集成平台开发微服务时简化常见任务。

使用示例

环境变量

您可以使用 VariablesConfig 类将环境变量加载到您的服务中。它需要一个所需变量的列表。它还支持可选的变量列表作为第二个参数。

from sesamutils import VariablesConfig
import sys

required_env_vars = ["username", "password", "hostname"]
optional_env_vars = ["debug", ("auth_type", "user")] # Default values can be given to optional environment variables by the use of tuples

config = VariablesConfig(required_env_vars, optional_env_vars=optional_env_vars)

if not config.validate():
    sys.exit(1)


print(config.username)

点化

帮助遍历和修改大型嵌套字典的类。让您按点表示法导航。

from sesamutils import Dotdictify

example_dict = {
    "test": {
        "my_thing": "hello"
    }
}

dot_dict = Dotdictify(example_dict)

print(dot_dict.test.my_thing)

# hello

探查器

您可以使用它(A profiling decorator)查看程序中函数执行时间的完整详细信息。基于此,如果需要,您可以优化您的 python 代码。

from sesamutils import profiler

@profiler
def <Name of your method>():
    <your method definition>

# Apply to any function with @profiler
# Profiles the function using cProfile, and prints out a report to screen.
# belwo are few lines for illustration  purpose.
ncalls tottime  percall  cumtime  percall filename:lineno(function)
1    0.000    0.000    0.312    0.312 C:/Work/PycharmProjects/node-notification-handler/service/notification-handler.py:143(get_node_members_and_roles)
2    0.000    0.000    0.311    0.156 C:\Users\ravish.ranjan\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\sessions.py:537(get)
2    0.000    0.000    0.311    0.156 C:\Users\ravish.ranjan\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\sessions.py:466(request)
2    0.000    0.000    0.309    0.154 C:\Users\ravish.ranjan\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\sessions.py:617(send)
2    0.000    0.000    0.308    0.154 C:\Users\ravish.ranjan\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\adapters.py:394(send)
2    0.000    0.000    0.306    0.153 C:\Users\ravish.ranjan\AppData\Local\Programs\Python\Python36\lib\site-packages\urllib3\connectionpool.py:446(urlopen)
2    0.000    0.000    0.306    0.153 C:\Users\ravish.ranjan\AppData\Local\Programs\Python\Python36\lib\site-packages\urllib3\connectionpool.py:319(_make_request)
1    0.000    0.000    0.258    0.258 C:\Work\PycharmProjects\node-notification-handler\service\portal.py:34(get_subscription_members)

芝麻记录仪

您可以使用它来节省时间和代码行。它提供了根级别日志记录配置的标准定制,并为您提供 SESAM 统一的标准设置。

from sesamutils import sesam_logger

logger = sesam_logger('<name of your module or logger>')

默认日志级别为“信息”。要设置不同的级别,您需要提供环境变量“LOG_LEVEL”。由于 Sesam 门户中的微服务日志视图直接从 docker 获取它自己的时间戳,因此该记录器默认不打印时间戳。但是,如果您想记录时间戳,则可以启用这样的时间戳:

logger = sesam_logger('<name of your module or logger>', timestamp=True)

如果您的应用使用 Flask 和 cherrypy,您可以通过发送应用实例来启用请求日志记录,sesam_logger如下所示:

logger = sesam_logger('<name of your module or logger>', app=<Flask app instance>)

服务 Flask 应用程序

使用Flask编写微服务时,我们不想使用内置的开发 Web 服务器,因为它不设置内容长度或支持分块编码(流)。为了缓解这种情况,我们使用cherrypy 来为我们的Flask 微服务提供服务。为了简化此任务,您可以使用我们的serve功能:

...
from sesamutils.flask import serve

app = Flask(__name__)

...

if __name__ == "__main__":
    serve(app)

要定义除默认端口 (5000) 之外的另一个端口,您可以执行以下操作:

    serve(app, port=<port>)

安装

pip install sesamutils

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

内置分布

sesamutils-0.1.10-py3-none-any.whl (12.1 kB 查看哈希

已上传 py3