Подтвердить что ты не робот

App Engine: хранилище данных разработки очищается каждый раз, когда я отключу свой компьютер. Как этого избежать?

Я использую 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...

4b9b3361

Ответ 1

Может ли путь хранения данных по умолчанию находится в каталоге /tmp, который удаляется при завершении работы? Вы можете вручную установить путь с помощью флага --datastore_path в dev_appserver.py. Подробнее см. документы.

Ответ 2

Эта очистка не должна быть по умолчанию.

  • Убедитесь, что это приложение в панели запуска Google AppEngine не имеет флага --clear_datastore.
    • Выберите приложение в списке и выберите "Изменить" - "Настройки приложений"...
    • Флаги дополнительной командной строки должны быть пустыми.

Я однажды установил это, чтобы перезапустить некоторые тесты и забыл удалить его.

  • Удалите существующее приложение в панели запуска и создайте новое приложение. Смотрите, помогает ли это.

  • Убедитесь, что ОС не удаляет файл. Если вы откроете журнал для приложения, затем запустите его, на выходе будет указано, где находится файл sqlite (например, T:\temp\dev_appserver.rdbms)

Ответ 3

при запуске сервера dev:

--storage_path=...

Путь, при котором все локальные файлы (например, файлы Datastore, Blobstore, Хранилища облачных хранилищ Google, журналы и т.д.), За исключением случаев, когда переопределяется --datastore_path, --blobstore_path, --logs_path и т.д.

найдено https://developers.google.com/appengine/docs/python/tools/devserver?csw=1