在异步应用程序中提供检修孔的python模块
aiomanhole的Python项目详细描述
氨酚
用于访问异步应用程序的检修孔。这对调试很有用 在您有权访问进程但需要 访问内部应用程序状态。
在应用程序中添加检修孔很简单:
from aiomanhole import start_manhole start_manhole(namespace={ 'gizmo': application_state_gizmo, 'whatsit': application_state_whatsit, })
快速示例,在一个shell中,运行以下命令:
$ python -m aiomanhole
在第二个shell中,运行以下命令:
$ nc -U /var/tmp/testing.manhole Well this is neat >>> f = 5 + 5 >>> f 10 >>> import os >>> os.getpid() 4238 >>> import sys >>> sys.exit(0)<> P>你会看到你启动的人孔已经退出了。
该包提供了一个线程化和非线程化的解释器,并允许 如果需要,可以在客户端之间共享命名空间。
当我开始的时候,我得到的是“地址已经在使用中”!救命啊!
与常规TCP/UDP套接字不同,Unix域套接字是 文件系统。当您的进程关闭时,创建的unix套接字是 没有清理。这意味着当你的应用程序再次启动时, 它将再次尝试将unix套接字绑定到该路径,但失败了 已经存在(它“已经在使用中”)。
使用unix套接字的标准方法是在 尝试再次绑定到它,例如:
import os try: os.unlink('/path/to/my.manhole') except FileNotFoundError: pass start_manhole('/path/to/my.manhole')
你可能会在关机时尝试清理套接字,但不要。什么 如果你的应用程序崩溃了?如果你的电脑断电怎么办?有很多 希望上一次跑步成功 令人钦佩的积极,是你做不到的。
我能说明检修孔里有什么吗?
是的!当你打电话给“启动检修孔”时,只需把你的字典 希望提供作为命名空间参数:
from aiomanhole import start_manhole start_manhole(namespace={ 'gizmo': application_state_gizmo, 'whatsit': application_state_whatsit, 'None': 5, # don't do this though })
什么时候应该使用threaded=true?
指定threaded=true意味着交互会话中的语句 在线程中执行,而不是在事件循环中执行。
例如,在非线程交互会话中执行此操作:
>>> while True: ... pass ...
你刚刚把申请表弄坏了!不重新启动就不能中止 申请书。如果在线程应用程序中运行它,则 “only”有一个线程破坏了CPU,减慢了应用程序的速度,如 反对让它完全没有反应。
默认情况下,线程解释器将在5秒后超时命令, 尽管这是可配置的。这不会不会杀死线程,但是 允许您继续运行命令。
更改历史记录
- 0.6.0(2019年4月30日)
- 不要使用全局循环。谢谢蒂莫西·菲茨!
- 允许端口为0。谢谢蒂莫西·菲茨!
- 修复单元测试失败。
- 0.5.0(2018年8月6日)
- 修复3.7中的语法错误
- 放下3.4支架。
- 0.4.2(2017年3月3日)
- 处理客户端在EOF时将套接字置于半关闭状态 发生。
- 0.4.1(2017年3月3日)
- 确保提示是字节,在0.4.0中被打断。
- 0.4.0(2017年3月3日)
- 确保向客户端报告实际语法错误。
- 0.3.0(2016年8月23日)
- 行为更改aiomanhole不再尝试删除unix套接字 关闭时。这是一种松散的行为,不符合最佳做法 (即,在启动服务器之前,在启动时删除unix套接字)。作为 因此,创建检修孔的错误现在将被记录,而不是静默记录 弱点。
- 启动检修孔现在返回您可以等待的未来。
- 给“开始检查孔”设置一个循环现在工作得更可靠。这无关紧要 对大多数人来说。
- 感觉“快节奏”
- 0.2.1(2014年9月14日)
- 处理没有的横幅。
- 修正了manifest.in中更改日志的小错误。
- 感觉到纳皮尔“
- 0.2.0(2014年6月25日)
- 更好地处理多行语句。
- setup.py指向项目url的错误域
- 已删除将“\u”无意义插入命名空间的操作。
- 增加了很多测试。
- 感觉“快节奏”
- 0.1.1(2014年6月19日)
- 安装时使用setuptools作为后备。
- 感觉“快节奏”
- 0.1(2014年6月19日)
- 初始版本
- 感觉“快节奏”