2012-01-02 7 views
0

Как отключить тайм-аут запроса приложения Google App Engine для конкретного cron/request.GAE: требуется более 30 секунд

Я создаю несколько подпрограмм, которым требуется более 30 секунд обработки, и GAE alwayes прекращают мою рутину.

Есть ли решение?

ответ

2

Один из вариантов: Task Queues который имеет ограничение по времени 10 минут.

Другое Backends, у которых нет ограничений по времени.

+0

Я делаю через backend cron, но я получаю таймаут с 30s – Victor

+0

Вы делаете какой-либо URLFetch? Он имеет тайм-аут 5 с. –

0

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

A. Использование хрон для выполнения задач Например:

cron: 
- description: Start Backend to parse the log 
    url: /_ah/start/ParseLog/ 
    schedule: every day 00:00 

B. Задачи, выполняемые хрон работают в передней части, так что все еще имеет ограничение по времени. Таким образом, я перенаправляю задачу на бэкэнд (называемый «рабочий»), чтобы избежать ограничения по времени.

class ParseLogStarter(webapp.RequestHandler): 
    # run on frontend 
    def get(self): 
     self.post() 

    def post(self): 
     date = self.request.get("date") 
     # do nothing but forwarding to backend "worker" 
     taskqueue.add(url="/_ah/ParseLog/", params={"date":date}, target='worker') 

C. На внутреннем интерфейсе, получать пересылаемые задачи и работать на работу подпрограмм.

class ParseLogWorker(webapp.RequestHandler): 
    # run on backends 
    def get(self): 
     self.post() 

    def post(self): 
     # do your routines job here 
0

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

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