Использование модуля полки дало мне неожиданное поведение. keys (), iter () и iteritems () не возвращают все записи на полке! Вот код:
cache = shelve.open('my.cache')
# ...
cache[url] = (datetime.datetime.today(), value)
позже:
cache = shelve.open('my.cache')
urls = ['accounts_with_transactions.xml', 'targets.xml', 'profile.xml']
try:
print list(cache.keys()) # doesn't return all the keys!
print [url for url in urls if cache.has_key(url)]
print list(cache.keys())
finally:
cache.close()
и вот вывод:
['targets.xml']
['accounts_with_transactions.xml', 'targets.xml']
['targets.xml', 'accounts_with_transactions.xml']
Кто-нибудь сталкивался с этим раньше, и есть ли обходной путь, не зная всех возможных ключей кэша a priori ?