2014-09-19 8 views
1

У меня есть приложение App Engine, в котором используется Google Cloud SQL, и со страницы в моем приложении я выполняю некоторую операцию с базой данных; всякий раз, когда эта страница доступна, она не может выполнять все операции с базой данных. Когда я иду на консоль, все, что я вижу, это /_ah/queue/__deferred__./_ah/queue/__ deferred__ в журналах Engine Engine

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

Примечание: Я не использовал очереди в моем коде.

Какова фактическая причина для/_ah/queue/__deferred__появится в журналах приложений Engine?

ответ

0

Если вы не указали имя очереди, все отложенные задачи переходят в очередь задач «по умолчанию». Оттуда вы можете повторно запустить, и если вы находитесь на локальном dev-сервере (режим отладки), вы можете пройти через код.

+0

Я не использовал очереди где-нибудь в моем коде, то почему App Engine толкает операцию в очереди, и когда я действительно смотрю на очереди когда это появляется в журнале, нет очереди и моя операция с базой данных завершается –

3

У меня была аналогичная проблема. Я обнаружил, что, что в одном из моих фильтров открытия сессии для каждого Incomming соединения:

httpRequest.getSession(true); 
//or the one below - both opens a valid HTTP Session 
httpRequest.getSession(); 

и мой AppEngine-web.xml был сконфигурирован для хранения сессии асинхронно

<sessions-enabled>true</sessions-enabled> 
<async-session-persistence enabled="true"/> 

Это имеет привели к созданию большого количества задач в очереди по умолчанию, и каждый из них попытался сохранить пустой сеанс. Чтобы этого избежать, убедитесь, что вы открываете сеанс только для правильных запросов. Либо путем фиксации фильтра или замены фильтра URL-шаблоны в вашем web.xml

+0

В моем appengine-web.xml я не установил . Я только включил сеанс. –

Смежные вопросы