Quantcast
Channel: Active questions tagged zeromq - Stack Overflow
Viewing all articles
Browse latest Browse all 193

Simple client/server ZMQ in Python to send multiple lines per request

$
0
0

This is my first exposure to ZMQ under Python and I want the server to sent multiple lines when it receives a request from the client.The code that I added to the example offered by ZMQ on the server side is:

with open("test.txt", 'r') as f:    for line in f:        socket.send_string(line.rstrip("\n"))

The question is how to make the server send all lines or how to make the client not to send a request before serverfinishes sending all the lines from test.txt

Client

import zmqcontext = zmq.Context()print("Connecting to hello world server")socket = context.socket(zmq.REQ)socket.connect("tcp://localhost:5555")for request in range(10):    print("Sending request %s" % request)    socket.send(b"Hello")    message = socket.recv()    print("Received reply %s [ %s ]" % (request, message))

Server

import timeimport zmqcontext = zmq.Context()socket = context.socket(zmq.REP)socket.bind("tcp://*:5555")while True:    #  Wait for next request from client    message = socket.recv()    print("Received request: %s" % message)    #  Do some 'work'    time.sleep(1)    #  Send reply back to client    with open("test.txt", 'r') as f:        for line in f:            socket.send_string(line.rstrip("\n"))

Client log

Connecting to hello wolrd serverSending request 0Received reply 0 [ This is test line 1 ]Sending request 1

This is where it stops, as the server generated the error shown bellow:

Server log

line 324, in send_string     return self.send(u.encode(encoding), flags=flags, copy=copy)File "socket.pyx", line 571, in zmq.backend.cython.socket.Socket.send (zmq/backend/cython/socket.c:5319)File "socket.pyx", line 618, in zmq.backend.cython.socket.Socket.send (zmq/backend/cython/socket.c:5086)File "socket.pyx", line 181, in zmq.backend.cython.socket._send_copy (zmq/backend/cython/socket.c:2081)File "checkrc.pxd", line 21, in zmq.backend.cython.checkrc._check_rc (zmq/backend/cython/socket.c:6032)zmq.error.ZMQError: Operation cannot be accomplished in current stateProcess finished with exit code 1 

test.txt

This is test line 1This is test line 2This is test line 3This is test line 4This is test line 5

Viewing all articles
Browse latest Browse all 193

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>