cookielib.Cookie
, чтобы процитировать его строку документации (в источниках ),
намеренно очень простой класс.Он просто содержит атрибуты.
, поэтому pickle
(или другие подходы к сериализации) прекрасно подходят для сохранения и восстановления каждого Cookie
экземпляра.
Что касается CookieJar
, set_cookie
устанавливает / добавляет один экземпляр cookie, __iter__
(чтобы использовать последний, просто выполните цикл for
на экземпляре jar), возвращает все экземпляры cookie, которые он содержит, один за другим.
Подклассчто вы можете использовать, чтобы увидеть, как создать «jar cookie для базы данных»: BSDDBCookieJar (часть mechanize
, но я только что указал конкретно на файл исходного кода jar) - это не такзагружает все файлы cookie в память, а хранит их в self._db
, который является экземпляром bsddb (в основном на диске, похожая на диск хэш-таблица, ограниченная наличием только строк в качестве ключей и значений) и использует pickle для сериализации.
Если вы в порядке в порядке, сохраняя каждый файл cookie в памяти во время операций, просто pickle
использовать банку проще всего (и, конечно, поместить большой двоичный объект в БД и получить его оттуда).когда ты перезагружаешься) -- s = cPickle.dumps(myJar, -1)
дает вам большую байтовую строку для всего jar (и, конечно, ее политику, а не только куки), и theJar = cPickle.loads(s)
перестраивает ее, как только вы перезагрузите s
как большой двоичный объект из БД.