Я ищу модуль или библиотеку, чтобы можно было читать и записывать значения так, как это делает простой словарь Python с простыми значениями (числа / строки / списки / поддиректории).
Безбезумный набор методов или классов без четкого примера, как здесь: https://dogpilecache.sqlalchemy.org/en/latest/core_usage.html#example-using-dogpile-directly-for-caching
В настоящее время я обнаружил, что fcache
было бы довольно просто: https://fcache.readthedocs.io/en/stable/
Но начальныйтесты с множественным доступом к сценариям показывают исключения при доступе:
test1.py
from fcache.cache import FileCache
mycache = FileCache('1')
while True:
mycache['test'] = '111'
mycache.sync()
x = mycache['test']
if x != '111' and x != '222':
print('=', x)
test2.py
from fcache.cache import FileCache
mycache = FileCache('1')
while True:
mycache['test'] = '222'
mycache.sync()
x = mycache['test']
if x != '111' and x != '222':
print('=', x)
test1.py вывод:
Error opening file: C:\Users\User\AppData\Local\1\1\Cache\cache\74657374
= None
test2.py вывод:
Traceback (most recent call last):
File "test2.py", line 7, in <module>
mycache.sync()
File "C:\Python\x86\38\lib\site-packages\fcache\cache.py", line 183, in sync
self._write_to_file(filename, self._buffer[ekey])
File "C:\Python\x86\38\lib\site-packages\fcache\cache.py", line 250, in _write_to_file
os.chmod(filename, self._mode)
OSError: [WinError 6800] The function attempted to use a name that is reserved for use by another transaction: 'C:\\Users\\User\\AppData\\Local\\1\\1\\Cache\\cache\\7465737
4'
multiprocessing.Lock
не может помочьисправьте это, поскольку те же ошибки зависят от чего-то другого, кроме эксклюзивного доступа.
Кажется, fcache
несовместим с многопроцессорным доступом.
Я хочу сохранить набор значенийкак в общей таблице, где флаг указывает на актуальность строки. И если флаг установлен или нет, то из таблицы необходимо удалить строку.
У меня нет безумного количества процессов, у меня нет безумного количества объектов Python различной природыхранить. Только простые значения, может быть, сотни, не более.
Существует ли уже существующий, простой, надежный и разумный способ доступа к одному простому файлу или файлам без огромной кучи строк кода для нескольких сценариев / процессов?