推荐的Python资源管理

时间:2019-01-06 12:25:55

标签: python-3.x resources

我写了一个类来启动服务器并管理其资源。像这样:

class Server:

  def __init__(self, ...):
    # create temporary directory 
    # initialize server conf files in temp dir
    ...

  def start(self, ...):
    # run server in a child process
    ...

  def terminate(self, ...):
    # kill server and clean up temp dir

我还有一个测试服务器的脚本。

s = Server()
# send requests to server and check result
run_tests()
s.terminate()

我想确保与服务器关联的资源在脚本末尾被清除。实际上,如果terminate()被异常或信号中断,则可能不会调用run_test()

我看到了几种解决方案。

  1. terminate方法调用__del__。但这需要保留人为的引用,以防止s被GC,并且我读到__del__容易出错。
  2. 捕获异常和信号中断(在finally子句中),但这需要语法开销。
  3. 使用上下文管理器,但是我可能需要在代码中的不同位置使用一台服务器(或几台服务器),并且它不适用于简单的with结构。

在这种情况下,推荐的解决方案是什么?

0 个答案:

没有答案