跳转到主要内容

审计任何正在运行的Python进程。

项目描述

Nogi

Build PyPI PyPI - Python Version PyPI - Status Downloads Downloads Code style: black

Python应用的开关式事件审计器。

实时监控运行中的Python应用程序中的Python事件和用户自定义事件。

Nogi允许您在不添加调试跟踪和侵入性打印的情况下审计您的代码。只需在您的代码中实例化Nogi,然后向运行中的应用程序发送信号以开始审计。

Nogi允许您在不重新启动应用程序的情况下启用和禁用审计,因此不会丢失您想要观察的上下文,例如正在发生的错误。

请看下面的示例。

有关详细信息,请阅读官方文档

安装

$ pip安装nogi

用法

只需在代码的开头实例化Nogi

Nogi()

示例

下面是一个具体的示例(见examples/sample.py

# sample.py
import requests
import time

from nogi import Nogi

Nogi()

def main():
    for i in range(1000):
        r = requests.get(
            "https://en.wikipedia.org/wiki/Python_(programming_language)")
        print(r.status_code)
        time.sleep(1)

if __name__ == "__main__":
    main()

运行前面的代码

$ python examples/sample.py
200
200
...
200
...

然后通过向先前启动的进程发送SIGUSR1来启用审计

$ ps ax | grep python | grep sample # to retrieve the process id (pid)
$ kill -SIGUSR1 <pid>

现在我们可以通过运行Nogi客户端来收集事件

$ nogi
Starting the audit listener
Audit client listening...
event: socket.getaddrinfo
data: ('en.wikipedia.org', 443, 0, 1, 0)
event: socket.__new__
data: (<socket.socket fd=-1, family=0, type=0, proto=0>, 2, 1, 6)
event: socket.connect
data: (<socket.socket fd=4, family=2, type=1, proto=6, laddr=('0.0.0.0', 0)>, ('185.15.58.224', 443))
event: http.client.connect
data: (<urllib3.connection.HTTPSConnection object at 0x7f0b48fafbf0>, 'en.wikipedia.org', 443)
event: socket.__new__
data: (<ssl.SSLSocket fd=-1, family=0, type=0, proto=0>, 2, 1, 6)
event: http.client.send
data: (<urllib3.connection.HTTPSConnection object at 0x7f0b48fafbf0>, b'GET /wiki/Python_(programming_language) HTTP/1.1\r\nHost: en.wikipedia.org\r\nUser-Agent: python-requests/2.31.0\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\n\r\n')
...

当您想要终止审计时,只需向相同的进程ID(pid)发送SIGUSR2信号以停止转发事件。

$ kill -SIGUSR2 <pid>

项目详情


下载文件

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

源分布

nogi-0.2.0.tar.gz (13.1 kB 查看散列)

上传时间

构建分布

nogi-0.2.0-py3-none-any.whl (7.3 kB 查看散列)

上传时间 Python 3

支持