Я выполняю некоторые операции, которые должны завершиться до 60 секунд, но могут быть некоторые редкие случаи, когда требуется больше времени (но это не займет больше 10 минут). Он говорит в документах движка приложения, если вы поймаете DeadlineExceededException, у вас есть меньше секунды, чтобы выполнять операции до того, как он навсегда завершится. Будет ли это достаточно времени для добавления задачи в очередь и/или записи хранилища данных? Я полагаю, что самым безопасным способом было бы добавить задачу async/write объект хранилища данных (async) в начале операции и удалить его из очереди, если операция завершена. Последний метод будет использовать в два раза больше вызовов api, но стоит ли это?DeadlineExceededException и DataStore/Операции очереди задач
ответ
Я бы предложил использовать очередь по умолчанию для всех операций, поэтому вам не придется реализовывать резервную копию, если вы поймаете мертвую строку, превышающую ошибку. Он более чист и прост в обслуживании, а также тот факт, что пользователю не нужно ждать завершения операции. Для этого вы можете запустить свою очередь с помощью ajax-вызова и получить результат в фоновом режиме, чтобы пользователь не дождался завершения операции. Да, это стоит того, так как он может «гарантировать» окно времени, которое вам может понадобиться.
Среда выполнения дает обработчику запроса немного больше времени (менее секунды) после создания исключения для подготовки настраиваемого ответа. поэтому достаточно добавить его в очередь задач.
Если вы не хотите, чтобы клиент продолжал опрос для результата очереди задач, я предлагаю вам взглянуть на API канала. Это позволит вам реализовать push-уведомления клиенту.
В конце вашей очереди задач вам просто нужно отправить уведомление клиенту, чтобы он теперь выполнил задачу, которая была обработана.
- 1. Выполнение очереди задач
- 2. Очереди задач и Datastore читают и записывают
- 3. Обзор системы очереди задач
- 4. Асинхронные очереди задач и асинхронные IO
- 5. Google appengine: производительность очереди задач
- 6. Задачи очереди задач GAE блокируются
- 7. Nodejs: Обработка очереди задач Async
- 8. контекст безопасности очереди задач приложения
- 9. Конечная точка очереди задач TFS
- 10. Статус 405 из очереди задач
- 11. Использование Task.Factory.StartNew для очереди задач
- 12. DeadlineExceededException on/_ah/разминка и общее приложение app app
- 13. Уникальные имена задач очереди задач только для активной продолжительности
- 14. Удаление всех задач в очереди ThreadPoolExecutor
- 15. Очереди Laravel - ограничение числа одновременных задач
- 16. Имитация очереди задач Google Appengine с Gearman
- 17. Очереди задач тестирования модулей в AppEngine
- 18. Определить количество выполненных задач в очереди ExecutorCompletionService
- 19. Реализация очереди многопоточных задач в .NET.
- 20. Отказ от ответа ядра из очереди задач
- 21. Как получить список задач в очереди GCD?
- 22. асинхронной очереди задач не работает (СВИФТ)
- 23. Очереди задач или многопоточность на движке google
- 24. Сельдерей: выборочно очистка очереди от задач Python
- 25. Какова цель очереди задач в движке google
- 26. Что случилось с этой настройкой очереди задач?
- 27. Ошибка очереди задач Google App Engine
- 28. Как удалить задачи из очереди задач сельдерея?
- 29. Получить количество задач в именованной очереди?
- 30. Получить список задач в очереди в сельдерей
Моя забота о постоянном опросе сервера, чтобы проверить, завершена ли очередь. То, что я делаю, заключается в том, что клиент попал на сервер, он сначала проверит хранилище данных, чтобы проверить, существует ли кешированная версия операции, если она существует. Если нет, я буду генерировать ответ динамически, кешировать его в хранилище данных и возвращать его. Большинство из этих ответов могут генерировать менее 60 секунд, но возможно, что некоторые из них могут занять больше времени. Я надеялся, что смогу ограничить количество опросов серверов, только в случае необходимости запрограммировать их. Какова временная гарантия очереди? Как часто я буду опробовать? – cowmix