ecoutils
-生态系统分析¶
随着编程生态系统的发展,运行时可变性的机会也随之增加。
对于高级编程环境,Python拥有最广泛的部署之一,这使其成为各种应用程序的可行目标。但广度带来了差异,所以知道你在使用什么是很重要的。
开发机器中常见的一些基本变体:
Executable runtime :CPython、PyPy、Jython等,外加构建日期和编译器
Language version :2.7至3.12
Host operating system :Windows、OS X、Ubuntu、Debian、CentOS、RHEL等
Features :64位、IPv6、Unicode字符支持(UCS-2/UCS-4)
Built-in library support :openssl、线程、SQLite、zlib
User environment :umaskulimit,工作目录路径
Machine info :CPU计数、主机名、文件系统编码
有关更多信息,请参阅下面的完整示例配置文件。
Eoutils是为了量化这种可变性而创建的。Eoutils快速生成关键运行时因素的信息密集型描述,副作用最小。简而言之,Eoutils类似于浏览器和用户代理分析,但适用于Python环境。
传输和收集¶
数据都是JSON可序列化的,适合发送到中央分析服务器。这方面的HTTPS支持的服务可以在https://github.com/mahmoud/espymetrics/上找到
值得注意的遗漏¶
由于空间限制(可能还有延迟限制),以下信息被认为不够密集,因此被省略:
全部
sysconfig
环境变量 (
os.environ
)
兼容性¶
到目前为止,ecoutils已经在Python3.7+和Py3上进行了测试。各种版本已经在Ubuntu、Debian、RHEL、OS X、FreeBSD和Windows7上进行了测试。
备注
boltons.ecoutils
历史上支持的版本是Python2.4,但在2024年,由于增加了测试负担,ecoutils支持跟踪与Bolton包的其余部分相同的版本的Python。有关较老的 Python ,请参见 this version 来自博尔顿23.0.0。
配置文件生成¶
配置文件由以下人员生成 ecoutils.get_profile()
。
作为模块运行时,ecoutils将调用 get_profile()
并以JSON格式打印个人资料::
$ python -m boltons.ecoutils
{
"_eco_version": "1.0.0",
"cpu_count": 4,
"cwd": "/home/mahmoud/projects/boltons",
"fs_encoding": "UTF-8",
"guid": "6b139e7bbf5ad4ed8d4063bf6235b4d2",
"hostfqdn": "mahmoud-host",
"hostname": "mahmoud-host",
"linux_dist_name": "Ubuntu",
"linux_dist_version": "14.04",
"python": {
"argv": "boltons/ecoutils.py",
"bin": "/usr/bin/python",
"build_date": "Jun 22 2015 17:58:13",
"compiler": "GCC 4.8.2",
"features": {
"64bit": true,
"expat": "expat_2.1.0",
"ipv6": true,
"openssl": "OpenSSL 1.0.1f 6 Jan 2014",
"readline": true,
"sqlite": "3.8.2",
"threading": true,
"tkinter": "8.6",
"unicode_wide": true,
"zlib": "1.2.8"
},
"version": "2.7.6 (default, Jun 22 2015, 17:58:13) [GCC 4.8.2]",
"version_info": [
2,
7,
6,
"final",
0
]
},
"time_utc": "2016-05-24 07:59:40.473140",
"time_utc_offset": -8.0,
"ulimit_hard": 4096,
"ulimit_soft": 1024,
"umask": "002",
"uname": {
"machine": "x86_64",
"node": "mahmoud-host",
"processor": "x86_64",
"release": "3.13.0-85-generic",
"system": "Linux",
"version": "#129-Ubuntu SMP Thu Mar 17 20:50:15 UTC 2016"
},
"username": "mahmoud"
}
pip install boltons
你自己去试试吧!
- boltons.ecoutils.get_profile(**kwargs)[源代码]¶
生态的主要入口点。调用它将返回有关当前进程的信息的JSON可序列化字典。
返回的信息不太可能在进程的生命周期内更改,而且在大多数情况下,大多数信息在两次运行之间也保持不变。
get_profile()
接受一个可选的关键字参数, scrub 一种bool
如果是真的,那就把可识别的信息清空了。这包括当前工作目录、主机名、Python可执行文件路径、命令行参数和用户名。值被替换为‘-’,但兼容性键保持不变。