0

我通过 mod_wsgi 在 Web 服务器上运行 Python 应用程序,并且能够通过服务器上的 SSH 访问 python shell。当应用程序运行时,部分应用程序会随着时间的推移在内存中生成字典和少量列表。

是否有一种可能的方法可以在服务器上启动 Python shell 并能够通过 shell 访问字典和列表,或者是将应用程序编程为 pickle 或 json 并将它们定期或通过事件触发器存储在文件中的唯一选项?

即使这不是针对 Web 服务器的情况,Python shell 是否有可能访问已经运行的 Python 应用程序?

4

1 回答 1

1

您通常不能从另一个 Python 解释器访问一个 Python 解释器。

做类似事情的最一般方法是将解释器放在套接字上(或 -pipe 或其他任何东西)到您的服务器程序中,然后将您的外壳连接到该解释器。

在模块之上做这件事code并不难,但要让它像普通的交互式解释器 shell 一样好,需要更多的工作。我相信 IDLE 和 IPython 都包含许多有用的源代码,甚至可能是一些你可以开箱即用的东西,或者只需很少的改动。

也可以在两个单独的程序之间直接共享数据。例如,multiprocessing.Value在上面使用mmap——或者更简单地说,只是将数据保存在数据库文件中而不是内存中。然后你的 shell 可以直接读取数据而不直接与服务器交互。然而,这意味着有适当的锁,或者尝试尽可能原子地写入并接受 shell 偶尔会因为竞争而得到垃圾。

但实际上,大多数情况下,如果您能够负担得起通过酸洗/JSON/其他方式转储数据,那是最简单和最安全的解决方案。

于 2013-02-20T01:12:20.577 回答