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 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | b58edc36604f91acb47eb424ceb4ea9513eccf2dd37e511b84cda8492498d93a |
|
| MD5 | 894c773e99f72a0b4a659601219d9c66 |
|
| 布莱克2-256 | a5ca856764bdb6bc845ad9879440a1528f92e924684a12506da3d4fc050e017d |