DeadlineExceededError обходные пути - PullRequest
1 голос
/ 14 марта 2011

Я делаю что-то вроде веб-паука.Он поймает данные, которые я хочу, из веб-списка.Количество WEB LIST составляет приблизительно 20. Каждый из них может быть выполнен в течение 1-10 секунд.

Я знаю DeadlineExceededError означает, что мой обработчик запросов не завершил работу в течение 30 секунд.Я также знаю, что не могу изменить 30-секундный лимит.

Поэтому мне нужно разбить свою работу на маленькие кусочки, но я не знаю, как это сделать.

Вотмой код:

    List<String> ids = agent.getWebList();

    if(ids.iterator().hasNext()) {
        for(String id : ids) {
            Data d = agent.getDetailedDataById(id);
            agent.updateData(d);
        }
    }

Ответы [ 3 ]

3 голосов
/ 14 марта 2011

Если вы работаете над веб-пауком, лучше всего использовать очереди задач:

Документы Java Task Queue

Python Task Queue docs

2 голосов
/ 14 марта 2011

Во время перебора ваших идентификаторов сохраняйте счетчик. Когда вы перехватываете DeadLineExceededError, передайте счетчик в качестве аргумента задаче, которая начинает обработку с этой позиции. Это будет сделано последовательно. Вы также можете разделить работу и назначить несколько задач для обработки одновременно.

0 голосов
/ 14 марта 2011

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

Нельзя поймать DeadlineExceededError во второй раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...