App Engine: хранилище данных разработки очищается при каждом выключении компьютера. Как этого избежать? - PullRequest
11 голосов
/ 03 ноября 2011

Я использую App Engine с Python в течение нескольких месяцев. Теперь, когда в моем приложении достаточно кода, я пытаюсь решить проблему, которую до сих пор игнорировал:

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

Я бы хотел сохранить эти данные до следующего запуска моего сервера разработки. Но я также хотел бы иметь возможность выключить компьютер без потери всех этих данных.

Как мне поступить?

Большое спасибо

======== ОБНОВЛЕНИЕ ==========

Когда я устанавливаю флаг 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 ...

Ответы [ 4 ]

6 голосов
/ 04 ноября 2011

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

3 голосов
/ 18 ноября 2013

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

--storage_path= ...

Путь, по которому все локальные файлы (такие как хранилище данных, файлы Blobstore, Файлы, журналы и т. Д.) Будут храниться, если только переопределяется с помощью --datastore_path, --blobstore_path, --logs_path и т. д.

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

3 голосов
/ 03 ноября 2011

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

  1. Убедитесь, что у этого приложения в панели запуска Google AppEngine нет флага --clear_datastore.
    • Выберите приложение в списке и выберите «Правка» -> «Настройки приложения» ...
    • Дополнительные флаги командной строки должны быть пустыми.

Однажды я установил это для перезапуска некоторых тестов и забыл удалить его.

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

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

0 голосов
/ 27 августа 2012

У меня была та же проблема, и установка последней версии gae SDK решила ее.

Как и в следующем случае: Хранилище данных движка приложения автоматически очищается при каждом запуске проекта

...