在异步应用程序中提供检修孔的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日)
  • 初始版本
  • 感觉“快节奏”

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何下载多个。java中的PDF文件   linux Java打开文件,形成实际用户主页~/   java如何在时间线内维护TableView选择?   java Hibernate注释@Where vs@WhereJoinTable   Java读/写访问异常FileNotFoundException(访问被拒绝)   继承在Java中是否可以扩展最后一个类?   Android HttpClient使用java使应用程序崩溃。lang.OutOfMemoryError:pthread_create   java为什么即使我在proguardproject中添加了jar文件,也会出现这种错误。txt?   如果添加JButton,swing Java FocusListener和KeyListener将无法工作   java使用solrj检索json格式的SolrDocument   使用Microsoft Visual Studio代码进行Java编程   java NoClassDefFoundError:org/apache/log4j/Logger   哈希集中包含相等对象的java   java中的参数化构造函数是否需要有一个主体?   java类似于NetBeans不必要的代码检测器   Java实践问题   java Blackberry“[projectname].调试文件丢失”和“I/O错误:找不到程序”jar