【问题标题】:Python shell access to a separate running scriptPython shell 访问单独的运行脚本
【发布时间】:2013-02-19 23:59:16
【问题描述】:

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

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

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

【问题讨论】:

    标签: python shell process


    【解决方案1】:

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

    最常用的方法是在你的服务器程序中放置一个interpreter-on-a-socket(或-pipe或其他),然后将你的shell连接到那个解释器。

    code 模块上执行此操作并不难,但要使其与普通的交互式解释器外壳一样好需要更多的工作。我相信 IDLE 和 IPython 都包含许多有用的源代码,甚至可能是您可以开箱即用或只需进行少量更改即可使用的东西。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-01
      • 1970-01-01
      相关资源
      最近更新 更多