On Sat, Jul 5, 2008 at 12:48 PM, nicdumz@svn.wikimedia.org wrote:
Revision: 5671 Author: nicdumz Date: 2008-07-05 10:48:13 +0000 (Sat, 05 Jul 2008)
Log Message:
Fixing [ 2009068 ] diskcache files could be deleted when bot finishes :
__del__ is not guaranteed to be called everytime, in particular when reference cycles survive the garbage collection process. Renaming __del__ to delete, and calling it from wikipedia::stopme
Modified Paths:
trunk/pywikipedia/diskcache.py trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/diskcache.py
--- trunk/pywikipedia/diskcache.py 2008-07-04 18:30:18 UTC (rev 5670) +++ trunk/pywikipedia/diskcache.py 2008-07-05 10:48:13 UTC (rev 5671) @@ -59,7 +59,7 @@ self.cache_file.seek(0) self.cache = []
- def __del__(self):
- def delete(self): self.cache_file.close() import os os.unlink(self.cache_path)
Modified: trunk/pywikipedia/wikipedia.py
--- trunk/pywikipedia/wikipedia.py 2008-07-04 18:30:18 UTC (rev 5670) +++ trunk/pywikipedia/wikipedia.py 2008-07-05 10:48:13 UTC (rev 5671) @@ -6332,6 +6332,10 @@ when it has stopped doing so. After a bot has run stopme() it will not slow down other bots any more. """
- if config.use_diskcache:
for site in _sites.itervalues():
if site._mediawiki_messages:
get_throttle.drop()site._mediawiki_messages.delete()
def _flush():
Pywikipedia-l mailing list Pywikipedia-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/pywikipedia-l
I think it is a better way to do this using a global class variable. _sites only contains sites created with getSite().
Bryan