一个正在运行的进程的Python REPL

5
我目前正在使用Python开发一个简单的应用程序,可以连接到服务器。目前,它是单线程的(因为当前不需要多线程)。
然而,出于调试、维护等方面的考虑,我也希望能够通过stdin拥有REPL。
如果可能的话,我该如何做?我需要注意什么吗?我是否需要创建一个单独的线程来处理它?
3个回答

3

你需要采用非阻塞或使用线程。

我个人会使用Twisted进行并发处理,它还提供了易于集成的REPL协议。


3
+1: twisted 还提供了 manhole 服务,通过该服务你可以 SSH 到应用程序,并在其运行时获取 REPL 以与之交互! - nosklo
我要试一试。听起来像是我所需要的。 - cwj

2

还有rfoo。从README中可以看到:

rfoo包中包含rconsole,它是一个远程Python控制台工具, 具有自动完成功能,可用于检查和修改正在运行的脚本的命名空间。

要在脚本中激活,请执行以下步骤:

from rfoo.utils import rconsole
rconsole.spawn_server()

要从shell附加,执行以下操作:
$ rconsole

安全提示:
使用spawn_server()启动的rconsole监听器将接受任何本地连接,因此在共享主机或类似环境中使用可能存在安全风险!


1
也许this个问题能帮到你。你可以稍微修改一下来创建一个自定义的REPL。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接