Я реализую полный асинхронный шаблон majordomo из zeroMQ.У меня возникают трудности с пониманием различных причин, по которым рабочие удаляются в ссылочных реализациях, особенно в отношении атрибута worker_ready
.
Например, в примере с брокером python (http://zguide.zeromq.org/py:mdbroker), при обработке работникаэто сообщение:
if (MDP.W_READY == command):
assert len(msg) >= 1 # At least, a service name
service = msg.pop(0)
# Not first command in session or Reserved service name
if (worker_ready or service.startswith(self.INTERNAL_SERVICE_PREFIX)):
self.delete_worker(worker, True)
Логическое значение worker_ready
вычисляется путем проверки того, находится ли работник в списке «известных работников», за до , затем создания экземпляра работника (и, таким образом,добавив его в список известных работников). Более описательное имя для worker_ready
может быть worker_known
.
Я не понимаю - если работник сообщает, это «ГОТОВ» и ранееизвестно, почему мы затем удаляем его? (удаление работника подразумевает удаление его из списка известных работников и списка незанятых работников)