在异步应用程序中提供检修孔的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如何定制springdata存储库方法名称?   html有没有办法将java应用程序或JApplet嵌入到网站中?   Jackson ObjectMapper将java从字符串序列化为JSON作为namevalue   java刷新JTable?   用Java程序分发用JavaDB制作的数据库   java Android如何启动新活动   当集合大小超过500.000时,java的处理速度会显著降低   在java的分层目录中的多个目录中查找相同的文件   java如何将ArrayList数据插入数据库   java如何修改此代码,使其时间复杂度为o(logn)或o(n),而不是o(n^2)   java面板(SimplePanel)中仅显示图像的前1/3(大约),   jakarta ee Java Bean和企业Java Bean之间的区别?   创建AWS Cloudfront自签名URL(java sdk)时出现amazon web服务错误   基于Jersey和Jackson查询参数的java动态属性过滤