Beanstalkc Тайм-аут Вопрос

1

Я использую beanstalkc в Python для процесса очередей для программы, которая должна анализировать список URL-адресов. Поэтому я использую тайм-аут в beanstalk, чтобы избежать огромного потребления времени по любому URL-адресу. Но даже после его использования мой процесс не исчерпывается лимитом и занимает много времени для разбора нескольких URL-адресов. Я использую следующий код:

for seed in seedlist:
    print 'Put data: %s' % seed
    bean.put(seed,ttr =5)
while True: 
    job = bean.reserve() 
    spider.spider(job.body)
    print 'Got data: %s' % job.body
Теги:
beanstalkd
beanstalkc

1 ответ

3

Я думаю, вы неправильно понимаете цель beanstalkd TTR тайм-аутов. Цитата: beanstalkd FAQ:

Как работает TTR

TTR применяется только к заданию в момент его сохранения. В этом случае таймер (называемый "время-левый" в статистике заданий) начинает отсчет с заданий TTR.

  • Если таймер достигает нуля, задание возвращается в готовую очередь.
  • Если задание было захоронено, удалено или выпущено до истечения таймера, таймер перестает существовать.
  • Если задание "прикасается" до того, как таймер достигнет нуля, таймер начнет отсчет с TTR.

(Статистика заданий заданий, которые не зарезервированы, по-прежнему содержит запись "время-левая", но ее значение не имеет смысла.)

Таким образом, TTR не поможет вам "избежать огромного потребления времени по любому URL". Это не магически убивает ваши рабочие процессы. Все, что он делает, это то, что beanstalkd возвращает задание обратно в очередь, если работник не отмечает задание, которое завершено после заданного промежутка времени (TTR).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню