Просмотр исходного кода

supervisor/http.py: Allow request and file gc

Make tail_f_producer have weakref to request.
Add tail_f_producer.__del__ that closes file.
Marc Abramowitz 11 лет назад
Родитель
Сommit
cbc940e7ed
1 измененных файлов с 6 добавлено и 1 удалено
  1. 6 1
      supervisor/http.py

+ 6 - 1
supervisor/http.py

@@ -5,6 +5,7 @@ import sys
 import supervisor.medusa.text_socket as socket
 import errno
 import pwd
+import weakref
 
 from supervisor.compat import urllib
 from supervisor.compat import sha1
@@ -644,7 +645,7 @@ class supervisor_af_unix_http_server(supervisor_http_server):
 class tail_f_producer:
     def __init__(self, request, filename, head):
         self.file = open(filename, 'rb')
-        self.request = request
+        self.request = weakref.ref(request)
         self.delay = 0.1
         sz = self.fsize()
         if sz >= head:
@@ -652,6 +653,10 @@ class tail_f_producer:
         else:
             self.sz = 0
 
+    def __del__(self):
+        if self.file:
+            self.file.close()
+
     def more(self):
         try:
             newsz = self.fsize()