Ответ 1
Может ли путь хранения данных по умолчанию находится в каталоге /tmp, который удаляется при завершении работы? Вы можете вручную установить путь с помощью флага --datastore_path
в dev_appserver.py. Подробнее см. документы.
Я использую App Engine с Python в течение нескольких месяцев. Теперь, когда мое приложение имеет достаточный объем кода, я пытаюсь решить проблему, которую я проигнорировал до сих пор:
Каждый раз, когда я выключаю свой компьютер, все мои объекты хранилища данных удаляются.
Я хотел бы сохранить эти данные до следующего запуска моего сервера разработки. Но я также хотел бы отключить компьютер, не потеряв все эти данные.
Как мне следует продолжить?
Спасибо большое
======== UPDATE ==========
Когда я устанавливаю флаг datastore_path, как объясняется @moishe, мой сервер разработки сбой, как только он должен записываться в хранилище данных.
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/datastore_file_stub.py", line 557, in __WritePickled
os.rename(tmp_filename, filename)
OSError: [Errno 13] Permission denied
Поэтому я дал этой папке все разрешения UNIX
chmod a+w /my_app_folder
Но у меня есть еще одна ошибка, которая
OSError: [Errno 21] Is a directory
Очевидно, что путь не должен быть каталогом. Поэтому я изменил путь на:
/my_app_folder/data.datastore
И теперь это работает! PFF...
Может ли путь хранения данных по умолчанию находится в каталоге /tmp, который удаляется при завершении работы? Вы можете вручную установить путь с помощью флага --datastore_path
в dev_appserver.py. Подробнее см. документы.
Эта очистка не должна быть по умолчанию.
--clear_datastore
.
Я однажды установил это, чтобы перезапустить некоторые тесты и забыл удалить его.
Удалите существующее приложение в панели запуска и создайте новое приложение. Смотрите, помогает ли это.
Убедитесь, что ОС не удаляет файл. Если вы откроете журнал для приложения, затем запустите его, на выходе будет указано, где находится файл sqlite (например, T:\temp\dev_appserver.rdbms)
при запуске сервера dev:
--storage_path=
...
Путь, при котором все локальные файлы (например, файлы Datastore, Blobstore, Хранилища облачных хранилищ Google, журналы и т.д.), За исключением случаев, когда переопределяется --datastore_path, --blobstore_path, --logs_path и т.д.
найдено https://developers.google.com/appengine/docs/python/tools/devserver?csw=1
У меня была та же проблема, и установка последнего gae SDK разрешила его.
Как и в случае: автоматическое очищение хранилища данных при каждом запуске проекта