Выполнение простого shelve.open
приведет к следующей ошибке:
>>> shelve.open('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.6/shelve.py", line 243, in open
return DbfilenameShelf(filename, flag, protocol, writeback)
File "/usr/lib/python3.6/shelve.py", line 227, in __init__
Shelf.__init__(self, dbm.open(filename, flag), protocol, writeback)
File "/usr/lib/python3.6/dbm/__init__.py", line 94, in open
return mod.open(file, flag, mode)
_gdbm.error: [Errno 22] Invalid argument
Я нашел только один связанный результат поиска по этой проблеме: https://github.com/pydanny/cookiecutter-django/issues/1793#issuecomment -440406112
Я получил точно такую же ошибку в среде Vagrant dev. Celery использует dbm для постоянного хранения, которое построено поверх библиотеки gdbm C. Некоторое тестирование показало, что это работает при создании или открытии файлов на собственной файловой системе, но не на смонтированной файловой системе.
Я запускаю это в Vagrant Ubuntu Box в MacOS, так что это имеет смысл. Я также запускаю ту же коробку под Windows 10, и эта проблема не возникает. Любые подсказки для исправления?