diff options
| -rw-r--r-- | Mailman/MailList.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Mailman/MailList.py b/Mailman/MailList.py index 0205319aa..9d0099653 100644 --- a/Mailman/MailList.py +++ b/Mailman/MailList.py @@ -70,8 +70,7 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin, def __del__(self): try: - for f in self._log_files.values(): - f.close() + self.CloseLogs() except AttributeError: # List didn't get far enough to have _log_files pass @@ -855,6 +854,15 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin, logf.write(msg % args + '\n') logf.flush() + def CloseLogs(self): + """Close all of this list's open log files. + + Useful to avoid 'Too many open files' errors when iterating over + lots of lists.""" + for kind, logger in self._log_files.items(): + del self._log_files[kind] + logger.close() + def CheckVersion(self, stored_state): """Migrate prior version's state to new structure, if changed.""" if (self.data_version >= mm_cfg.DATA_FILE_VERSION and |
