2014-01-11 3 views
0

У меня есть приложение GAE, в котором есть приложение app.yaml, которое описывает обработчики запросов и использует отложенное расширение, чтобы помещать задачи в очередь push, которая ориентирована на бэкэнд, также определенный в моем приложении ,Использование очередей задач с новыми модулями GAE

Тем не менее, я видел уведомления на панели инструментов GAE, в которых говорилось: «Вы используете серверы, вы должны смотреть на модули». Поэтому я просмотрел модули, и мне трудно понять, как определить мой бэкэнд как модуль. В моем бэкэнд не требуются явно определенные обработчики запросов. Он обрабатывает задачи только из очереди. Но когда я создаю файл yaml модуля для бэкэнд без обработчиков, dev-сервер жалуется, что это недопустимый файл.

Я попытался использовать файл backend_conversion.py и дублирует обработчики запросов из моего модуля по умолчанию в мой бэкэнд-модуль, который, похоже, работает, но он чувствует себя не так.

Источник проекта можно найти here, а филиал с преобразованием модуля - here.

Любые советы будут оценены.

+0

Вам нужно будет добавить раздел обработчиков с чем-то в нем - я думаю, проверка имела смысл до того, как существовали модули, но теперь не так много. – Greg

ответ

2

Вы можете установить директиву target для определения очереди в queue.yaml:

- name: solver_queue 
    ... 
    target: solver_backend 

и добавить параметр _queue к deferred.defer:

deferred.defer(function, param1, param2, _queue='solver_queue') 
+0

Спасибо за этот намек. Я уже использовал параметр _queue, но я также использовал таргетинг на solverbackend в вызове отсрочки, используя _target. Я предпочитаю устанавливать его в файле queue.yaml, как вы описываете. – dOxxx

+0

Я отредактировал ответ, чтобы избежать путаницы имен. –

0

Мой бэкенд не нуждается в какой-либо явно определенные обработчики запросов. Он обрабатывает задачи только из очереди.

Причина, по которой вы можете чувствовать себя backend_conversion.py не так, потому что она дублирует ваших обработчиков, и вы чувствуете, что ваш backend не нуждается в обработчиках раньше. Но бэкэнд нуждается в обработчиках как интерфейсный экземпляр. Фактически вы делаете это на основе всего вашего приложения (определенного app.yaml) на экземпляре бэкэнд. Таким образом, ваш экземпляр frontend и экземпляр backend фактически используют один и тот же код раньше.

Поэтому

файл backend_conversion.py и дублирует обработчики запросов

является правильное поведение.

+0

Конечно, я понимаю, почему в качестве преобразования по умолчанию это имеет смысл. Но почему я не могу изменить это определение и удалить обработчики без ошибок? – dOxxx

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