У меня есть несколько сценариев, запущенных на сервере, который распевает и разглаживает различные словари. Все они используют один и тот же базовый код для засолки, как показано ниже:Python Pickling Dictionary EOFError
SellerDict=open('/home/hostadl/SellerDictkm','rb')
SellerDictionarykm=pickle.load(SellerDict)
SellerDict.close()
SellerDict=open('/home/hostadl/SellerDictkm','wb')
pickle.dump(SellerDictionarykm,SellerDict)
SellerDict.close()
Все скрипты работать нормально для одного из них, за исключением. Тот, у которого есть проблемы, попадает на различные сайты и сбрасывает данные и хранит его в словаре. Этот код работает весь день травления и расклеивания словарей и останавливается в полночь. Затем начинается cronjob на следующее утро. Этот скрипт может работать в течение нескольких недель без проблем, но примерно раз в месяц скрипт умирает из-за EOFError, когда он пытается открыть словарь. Размер словарей обычно составляет около 80 МБ. Я даже попробовал добавить SellerDict.flush() перед SellerDict.close(), когда травил данные, чтобы убедиться, что вечер был покраснел.
Любая идея может быть причиной этого? Python довольно солидный, поэтому я не думаю, что это связано с размером файла. Там, где код работает отлично в течение долгого времени, прежде чем умереть, это заставляет меня поверить, что, возможно, что-то сохраняется в словаре, который вызывает эту проблему, но я понятия не имею.
Кроме того, если вы знаете, как лучше сохранить словари, кроме рассола, я открыт для вариантов. Как я уже говорил, словари постоянно открываются и закрываются. Просто для пояснения, только одна программа будет использовать один и тот же словарь, чтобы проблема не вызывалась несколькими программами, пытающимися получить доступ к одному и тому же словарю.
UPDATE:
Вот отслеживающий, что у меня есть из файла журнала.
Traceback (most recent call last):
File "/home/hostadl/CompileRecentPosts.py", line 782, in <module>
main()
File "/home/hostadl/CompileRecentPosts.py", line 585, in main
SellerDictionarykm=pickle.load(SellerDict)
EOFError
Вы используете какую-либо стратегию блокировки? –
Я не использую никаких стратегий блокировки ... – jordanskis