2014-09-11 4 views
3

Я запускаю beanstalkd как услугу, используя стандарт /etc/default/beanstalkd.Изменение beanstalkd default TTR

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

Есть ли способ установить TTR по умолчанию для beanstalkd? Я предполагаю, что я могу изменить это где-нибудь в/etc/default/beanstalkd, но я не смог найти это в документах beanstalkd.

ответ

3

Невозможно установить глобальное значение по умолчанию в/etc/default/beanstalkd или в другом месте, но достаточно просто установить функцию/класс-оболочку, чтобы все задания были перенесены, а затем вставлены в очередь, которая установила TTR (параметр команде PUT), если она не была специально установлена.

В beanstalkc, который заменит/заменит функцию put.

def put(self, body, priority=DEFAULT_PRIORITY, delay=0, ttr=DEFAULT_TTR): 
3

Мне кажется, что вы не внедрили протокол должным образом. Вам необходимо обработать DEADLINE_SOON и сделать TOUCH.

Что означает DEADLINE_SOON?

DEADLINE_SOON является ответом на резервную команду, указывающую, что у вас есть задание, срок действия которого действительно велик (текущий запас прочности составляет примерно 1 секунду).

Если вы часто принимаете ошибки в резерве , вероятно, вам стоит подумать об увеличении TTR на ваших рабочих местах, так как обычно это означает, что вы не завершаете их вовремя. Также может быть, что вы не удаляете задачи, когда их завершаете.

Для получения дополнительной информации см. mailing list discussion.

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

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

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

„потрогать“Команда

Позволяет работнику требовать больше времени работайте на рабочем месте. Это полезно для рабочих мест, которые потенциально могут занять много времени, но вы по-прежнему хотите получить преимущества TTR, тянущие работу от не отвечающего требованиям рабочего.Рабочий может периодически сообщать серверу, что он все еще жив, и обрабатывает задание (например, он может делать это на DEADLINE_SOON). Команда откладывает автоматическое освобождение зарезервированного задания TTR секунд после выдачи команды.