在异步应用程序中提供检修孔的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第三方库


热门话题
datetime如何使用JodaTime在Java中设置时间属性   java固定算法的性能时间   java如何从JMenu中获取所选项以更改文本区域的文本颜色?   java配置单元UDF传递数组<string>作为参数   javaapachebeam和BigQuery   java与PrintWriter之间的差异。printf和PrintWriter。格式方法   继承如何处理按Java版本更改的导入,以及在多个版本上编译   xml java。lang.noClassDefFoundant生成错误   java如何使用包含映射的JSON发送POST请求?   java如何在任何应用程序的JAR文件中绑定MySql数据库?   Java脚本解释器   sslhttpclientjava。网SocketException:未实现未连接的socket   java如何为Android应用程序创建类似于Cron作业的东西   java JButton+radiobox+复选框   java内存管理将文件写入内存   java这是计算对象实例的有效方法吗?   用于死锁情况的java代码?   JavaSpring容器作为新实体插入,而不是存储在表中