zeromq: как предотвратить бесконечное ожидание?

Я только начал работать с ZMQ. Я разрабатываю приложение, рабочий процесс которого выглядит так:

  1. один из многих клиентов (которые имеют случайные адреса PULL) PUSH запрос к серверу на 5555
  2. сервер вечно ждет клиентских PUSH. Когда один из них приходит, порождается рабочий процесс для этого конкретного запроса. Да, рабочие процессы могут существовать одновременно.
  3. Когда этот процесс завершает свою задачу, он отправляет результат клиенту.

Я предполагаю, что архитектура PUSH/PULL подходит для этого. Пожалуйста, поправьте меня в этом.


Но как мне справиться с этими сценариями?

  1. client_receiver.recv() будет ждать бесконечное время, если сервер не отвечает.
  2. клиент может послать запрос, но сразу после этого произойдет сбой, следовательно, рабочий процесс застрянет на server_sender.send() навсегда.

Так как же мне настроить что-то вроде таймаута в модели PUSH/PULL?


EDIT: Благодаря предложениям user938949, я получил рабочий ответ и делюсь им для потомков.

65
задан Jesvin Jose 26 September 2011 в 07:47
поделиться