zeromq: Wie verhindert man unendliches Warten?

Ich habe gerade angefangen mit der ZMQ. Ich entwerfe eine app, deren Arbeitsablauf ist:

  1. einer der vielen Kunden (die zufällig PULL-Adressen) DRÜCKEN Sie eine Anfrage an einen server 5555
  2. der server ist für immer warten für den Kunden Schiebt. Wenn einer kommt und ein worker-Prozess erzeugt wird, für die betreffende Anfrage. Ja, die worker-Prozesse können gleichzeitig existieren.
  3. Wenn dieser Prozess abgeschlossen ist, es ist Aufgabe, es Drückt das Ergebnis an den client.

Ich nehme an, dass das PUSH/PULL-Architektur ist dafür besonders gut geeignet. Bitte korrigieren Sie mich,.


Aber wie umgehe ich diese Szenarien?

  1. die client_receiver.recv() wartet, für eine unendliche Zeit, wenn der server nicht antwortet.
  2. kann die client-Anfrage senden, aber es werden nicht sofort nach, so dass ein worker-Prozess bleibt stecken server_sender.send() auf immer.

So, wie richte ich so etwas wie ein timeout in der PUSH - /PULL-Modell?


BEARBEITEN: Dank user938949 Anregungen, ich habe eine arbeiten Antwort und ich Teile es für die Nachwelt.

InformationsquelleAutor der Frage aitchnyu | 2011-09-24

Schreibe einen Kommentar