Appengine: put_async не работает (по крайней мере, на сервере разработки)? - PullRequest
7 голосов
/ 30 августа 2011

Примечание : ЭТО РАБОТАЕТ В ПРОИЗВОДСТВЕ. Я имею в виду, когда я загружаю приложение, оно просто работает отлично. ПРОБЛЕМА В СЕРВЕРЕ РАЗВИТИЯ.

Вот код, который может показать вам, что я пытаюсь сделать:

e = Employee(key_name = 'some_key_name',name='John Bonham')
db.put_async(e)

Если я делаю это, и через некоторое время я пытаюсь получить это

e = Employee.get_by_key_name('some_key_name') # e is None

Это не работает. Нет! Но если я сделаю это:

e = Employee(key_name = 'some_key_name',name='John Bonham')
op = db.put_async(e)
op.get_result()

Работает нормально.

Что мне не хватает?

Важное примечание: я жду некоторое время, чтобы проверить, создан ли объект! Я не получаю после вызова put_async. Но это все равно не работает, даже через минуту. Я на сервере разработки!

1 Ответ

14 голосов
/ 31 августа 2011

Если вы не позвоните .wait() или .get_result() на RPC, нет способа гарантировать его завершение.В случае dev_appserver, который не является многопоточным, реальная работа выполняется при вызове этих методов - на самом деле она не асинхронна в разработке, а только в работе.

...