Pyzmq high-water mark not working on pub socket












1















According to the ZeroMQ documentation a pub socket is supposed to drop messages once the number of queued messages reaches the high-water mark.



This doesn't seem to work in the following example (and yes I do set the hwm before bind/connect):



import time
import pickle
from threading import Thread
import zmq

ctx = zmq.Context()

def pub_thread():
pub = ctx.socket(zmq.PUB)
pub.set_hwm(2)
pub.bind('tcp://*:5555')

i = 0
while True:
# Send message every 100ms
time.sleep(0.1)
pub.send_string("test", zmq.SNDMORE)
pub.send_pyobj(i)
i += 1

def sub_thread():
sub = ctx.socket(zmq.SUB)
sub.subscribe("test")
sub.connect('tcp://localhost:5555')
while True:
# Receive messages only every second
time.sleep(1)
msg = sub.recv_multipart()
print("Sub: %d" % pickle.loads(msg[1]))

t_pub = Thread(target=pub_thread)
t_sub = Thread(target=sub_thread)
t_pub.start()
t_sub.start()

while True:
pass


I'm sending messages on pub 10 times faster than reading them on the sub socket, hwm is set to 2. I would expect to only receive about every 10th message. Instead, I see the following output:



Sub: 0
Sub: 1
Sub: 2
Sub: 3
Sub: 4
Sub: 5
Sub: 6
Sub: 7
Sub: 8
Sub: 9
Sub: 10
Sub: 11
Sub: 12
Sub: 13
Sub: 14
...


so I see all messages arriving, thus they are held in some queue until I read them. Same holds true when adding a hwm=2 on the sub socket as well before connect.



What am I doing wrong or am I misunderstanding hwm?



I use pyzmq version 17.1.2










share|improve this question

























  • Try with this and this post.

    – Benyamin Jafari
    Nov 18 '18 at 11:36











  • I updated my answer. hope help you up.

    – Benyamin Jafari
    Nov 24 '18 at 21:10
















1















According to the ZeroMQ documentation a pub socket is supposed to drop messages once the number of queued messages reaches the high-water mark.



This doesn't seem to work in the following example (and yes I do set the hwm before bind/connect):



import time
import pickle
from threading import Thread
import zmq

ctx = zmq.Context()

def pub_thread():
pub = ctx.socket(zmq.PUB)
pub.set_hwm(2)
pub.bind('tcp://*:5555')

i = 0
while True:
# Send message every 100ms
time.sleep(0.1)
pub.send_string("test", zmq.SNDMORE)
pub.send_pyobj(i)
i += 1

def sub_thread():
sub = ctx.socket(zmq.SUB)
sub.subscribe("test")
sub.connect('tcp://localhost:5555')
while True:
# Receive messages only every second
time.sleep(1)
msg = sub.recv_multipart()
print("Sub: %d" % pickle.loads(msg[1]))

t_pub = Thread(target=pub_thread)
t_sub = Thread(target=sub_thread)
t_pub.start()
t_sub.start()

while True:
pass


I'm sending messages on pub 10 times faster than reading them on the sub socket, hwm is set to 2. I would expect to only receive about every 10th message. Instead, I see the following output:



Sub: 0
Sub: 1
Sub: 2
Sub: 3
Sub: 4
Sub: 5
Sub: 6
Sub: 7
Sub: 8
Sub: 9
Sub: 10
Sub: 11
Sub: 12
Sub: 13
Sub: 14
...


so I see all messages arriving, thus they are held in some queue until I read them. Same holds true when adding a hwm=2 on the sub socket as well before connect.



What am I doing wrong or am I misunderstanding hwm?



I use pyzmq version 17.1.2










share|improve this question

























  • Try with this and this post.

    – Benyamin Jafari
    Nov 18 '18 at 11:36











  • I updated my answer. hope help you up.

    – Benyamin Jafari
    Nov 24 '18 at 21:10














1












1








1


0






According to the ZeroMQ documentation a pub socket is supposed to drop messages once the number of queued messages reaches the high-water mark.



This doesn't seem to work in the following example (and yes I do set the hwm before bind/connect):



import time
import pickle
from threading import Thread
import zmq

ctx = zmq.Context()

def pub_thread():
pub = ctx.socket(zmq.PUB)
pub.set_hwm(2)
pub.bind('tcp://*:5555')

i = 0
while True:
# Send message every 100ms
time.sleep(0.1)
pub.send_string("test", zmq.SNDMORE)
pub.send_pyobj(i)
i += 1

def sub_thread():
sub = ctx.socket(zmq.SUB)
sub.subscribe("test")
sub.connect('tcp://localhost:5555')
while True:
# Receive messages only every second
time.sleep(1)
msg = sub.recv_multipart()
print("Sub: %d" % pickle.loads(msg[1]))

t_pub = Thread(target=pub_thread)
t_sub = Thread(target=sub_thread)
t_pub.start()
t_sub.start()

while True:
pass


I'm sending messages on pub 10 times faster than reading them on the sub socket, hwm is set to 2. I would expect to only receive about every 10th message. Instead, I see the following output:



Sub: 0
Sub: 1
Sub: 2
Sub: 3
Sub: 4
Sub: 5
Sub: 6
Sub: 7
Sub: 8
Sub: 9
Sub: 10
Sub: 11
Sub: 12
Sub: 13
Sub: 14
...


so I see all messages arriving, thus they are held in some queue until I read them. Same holds true when adding a hwm=2 on the sub socket as well before connect.



What am I doing wrong or am I misunderstanding hwm?



I use pyzmq version 17.1.2










share|improve this question
















According to the ZeroMQ documentation a pub socket is supposed to drop messages once the number of queued messages reaches the high-water mark.



This doesn't seem to work in the following example (and yes I do set the hwm before bind/connect):



import time
import pickle
from threading import Thread
import zmq

ctx = zmq.Context()

def pub_thread():
pub = ctx.socket(zmq.PUB)
pub.set_hwm(2)
pub.bind('tcp://*:5555')

i = 0
while True:
# Send message every 100ms
time.sleep(0.1)
pub.send_string("test", zmq.SNDMORE)
pub.send_pyobj(i)
i += 1

def sub_thread():
sub = ctx.socket(zmq.SUB)
sub.subscribe("test")
sub.connect('tcp://localhost:5555')
while True:
# Receive messages only every second
time.sleep(1)
msg = sub.recv_multipart()
print("Sub: %d" % pickle.loads(msg[1]))

t_pub = Thread(target=pub_thread)
t_sub = Thread(target=sub_thread)
t_pub.start()
t_sub.start()

while True:
pass


I'm sending messages on pub 10 times faster than reading them on the sub socket, hwm is set to 2. I would expect to only receive about every 10th message. Instead, I see the following output:



Sub: 0
Sub: 1
Sub: 2
Sub: 3
Sub: 4
Sub: 5
Sub: 6
Sub: 7
Sub: 8
Sub: 9
Sub: 10
Sub: 11
Sub: 12
Sub: 13
Sub: 14
...


so I see all messages arriving, thus they are held in some queue until I read them. Same holds true when adding a hwm=2 on the sub socket as well before connect.



What am I doing wrong or am I misunderstanding hwm?



I use pyzmq version 17.1.2







python zeromq pyzmq






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 18 '18 at 13:50









Benyamin Jafari

2,91132038




2,91132038










asked Nov 17 '18 at 23:14









SchwingkopfSchwingkopf

183




183













  • Try with this and this post.

    – Benyamin Jafari
    Nov 18 '18 at 11:36











  • I updated my answer. hope help you up.

    – Benyamin Jafari
    Nov 24 '18 at 21:10



















  • Try with this and this post.

    – Benyamin Jafari
    Nov 18 '18 at 11:36











  • I updated my answer. hope help you up.

    – Benyamin Jafari
    Nov 24 '18 at 21:10

















Try with this and this post.

– Benyamin Jafari
Nov 18 '18 at 11:36





Try with this and this post.

– Benyamin Jafari
Nov 18 '18 at 11:36













I updated my answer. hope help you up.

– Benyamin Jafari
Nov 24 '18 at 21:10





I updated my answer. hope help you up.

– Benyamin Jafari
Nov 24 '18 at 21:10












1 Answer
1






active

oldest

votes


















1














With borrowing an answer to the issue which I opened in Github, I've updated my answer as follows:






Messages are held in operating system's network buffers. I have found
HWMs to be not that useful because of that. Here is modified code
where subscriber misses messages:



import time
import pickle
import zmq
from threading import Thread
import os

ctx = zmq.Context()

def pub_thread():
pub = ctx.socket(zmq.PUB)
pub.setsockopt(zmq.SNDHWM, 2)
pub.setsockopt(zmq.SNDBUF, 2*1024) # See: http://api.zeromq.org/4-2:zmq-setsockopt
pub.bind('tcp://*:5555')
i = 0
while True:
time.sleep(0.001)
pub.send_string(str(i), zmq.SNDMORE)
pub.send(os.urandom(1024))
i += 1

def sub_thread():
sub = ctx.socket(zmq.SUB)
sub.setsockopt(zmq.SUBSCRIBE, b'')
sub.setsockopt(zmq.RCVHWM, 2)
sub.setsockopt(zmq.RCVBUF, 2*1024)
sub.connect('tcp://localhost:5555')
while True:
time.sleep(0.1)
msg, _ = sub.recv_multipart()
print("Received:", msg.decode())

t_pub = Thread(target=pub_thread)
t_pub.start()
sub_thread()




Output looks something like this:



Received: 0
Received: 1
Received: 2
Received: 3
Received: 4
Received: 5
Received: 6
Received: 47
Received: 48
Received: 64
Received: 65
Received: 84
Received: 85
Received: 159
Received: 160
Received: 270




Messages are missed because all queues/buffers are full and publisher
starts to drop messages (see documentation for ZMQ_PUB:
http://api.zeromq.org/4-2:zmq-socket).






[NOTE]:




  • You should use the high-water mark option in listener/subscriber and advertiser/publisher.

  • These posts are also relevant (Post1 - Post2)


  • sock.setsockopt(zmq.CONFLATE, 1) is another option to get the last message only which defined in subscriber side.






share|improve this answer


























  • Thanks for your suggestions. However, set_hwm is equivalent to setsockopt in this case, it internally calls setsockopt(zmq.SNDHWM, x) or setsockopt(zmq.RCVHWM, x) depending on the socket type. Your code produces the exact same output as mine, adding the hwm on the receiver side doesn't change the behavior, as mentioned in my initial post. The conflate setting "Does not supports multi-part messages" according to ZeroMQ docs, so its not an option.

    – Schwingkopf
    Nov 18 '18 at 16:58













  • @Schwingkopf I double check it.

    – Benyamin Jafari
    Nov 18 '18 at 17:00











  • Do you mean "I have double checked it, it's working" or "I will double check that its still not working, as you state" ?

    – Schwingkopf
    Nov 20 '18 at 22:04











  • @Schwingkopf No, on your case didn't work, I had the same problem, but I couldn't resolve it using hwm then my problem fixed using conflate option.

    – Benyamin Jafari
    Nov 21 '18 at 20:25











  • @Schwingkopf Also I open a github issue in pyzmq repository.

    – Benyamin Jafari
    Nov 21 '18 at 20:27











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53356451%2fpyzmq-high-water-mark-not-working-on-pub-socket%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









1














With borrowing an answer to the issue which I opened in Github, I've updated my answer as follows:






Messages are held in operating system's network buffers. I have found
HWMs to be not that useful because of that. Here is modified code
where subscriber misses messages:



import time
import pickle
import zmq
from threading import Thread
import os

ctx = zmq.Context()

def pub_thread():
pub = ctx.socket(zmq.PUB)
pub.setsockopt(zmq.SNDHWM, 2)
pub.setsockopt(zmq.SNDBUF, 2*1024) # See: http://api.zeromq.org/4-2:zmq-setsockopt
pub.bind('tcp://*:5555')
i = 0
while True:
time.sleep(0.001)
pub.send_string(str(i), zmq.SNDMORE)
pub.send(os.urandom(1024))
i += 1

def sub_thread():
sub = ctx.socket(zmq.SUB)
sub.setsockopt(zmq.SUBSCRIBE, b'')
sub.setsockopt(zmq.RCVHWM, 2)
sub.setsockopt(zmq.RCVBUF, 2*1024)
sub.connect('tcp://localhost:5555')
while True:
time.sleep(0.1)
msg, _ = sub.recv_multipart()
print("Received:", msg.decode())

t_pub = Thread(target=pub_thread)
t_pub.start()
sub_thread()




Output looks something like this:



Received: 0
Received: 1
Received: 2
Received: 3
Received: 4
Received: 5
Received: 6
Received: 47
Received: 48
Received: 64
Received: 65
Received: 84
Received: 85
Received: 159
Received: 160
Received: 270




Messages are missed because all queues/buffers are full and publisher
starts to drop messages (see documentation for ZMQ_PUB:
http://api.zeromq.org/4-2:zmq-socket).






[NOTE]:




  • You should use the high-water mark option in listener/subscriber and advertiser/publisher.

  • These posts are also relevant (Post1 - Post2)


  • sock.setsockopt(zmq.CONFLATE, 1) is another option to get the last message only which defined in subscriber side.






share|improve this answer


























  • Thanks for your suggestions. However, set_hwm is equivalent to setsockopt in this case, it internally calls setsockopt(zmq.SNDHWM, x) or setsockopt(zmq.RCVHWM, x) depending on the socket type. Your code produces the exact same output as mine, adding the hwm on the receiver side doesn't change the behavior, as mentioned in my initial post. The conflate setting "Does not supports multi-part messages" according to ZeroMQ docs, so its not an option.

    – Schwingkopf
    Nov 18 '18 at 16:58













  • @Schwingkopf I double check it.

    – Benyamin Jafari
    Nov 18 '18 at 17:00











  • Do you mean "I have double checked it, it's working" or "I will double check that its still not working, as you state" ?

    – Schwingkopf
    Nov 20 '18 at 22:04











  • @Schwingkopf No, on your case didn't work, I had the same problem, but I couldn't resolve it using hwm then my problem fixed using conflate option.

    – Benyamin Jafari
    Nov 21 '18 at 20:25











  • @Schwingkopf Also I open a github issue in pyzmq repository.

    – Benyamin Jafari
    Nov 21 '18 at 20:27
















1














With borrowing an answer to the issue which I opened in Github, I've updated my answer as follows:






Messages are held in operating system's network buffers. I have found
HWMs to be not that useful because of that. Here is modified code
where subscriber misses messages:



import time
import pickle
import zmq
from threading import Thread
import os

ctx = zmq.Context()

def pub_thread():
pub = ctx.socket(zmq.PUB)
pub.setsockopt(zmq.SNDHWM, 2)
pub.setsockopt(zmq.SNDBUF, 2*1024) # See: http://api.zeromq.org/4-2:zmq-setsockopt
pub.bind('tcp://*:5555')
i = 0
while True:
time.sleep(0.001)
pub.send_string(str(i), zmq.SNDMORE)
pub.send(os.urandom(1024))
i += 1

def sub_thread():
sub = ctx.socket(zmq.SUB)
sub.setsockopt(zmq.SUBSCRIBE, b'')
sub.setsockopt(zmq.RCVHWM, 2)
sub.setsockopt(zmq.RCVBUF, 2*1024)
sub.connect('tcp://localhost:5555')
while True:
time.sleep(0.1)
msg, _ = sub.recv_multipart()
print("Received:", msg.decode())

t_pub = Thread(target=pub_thread)
t_pub.start()
sub_thread()




Output looks something like this:



Received: 0
Received: 1
Received: 2
Received: 3
Received: 4
Received: 5
Received: 6
Received: 47
Received: 48
Received: 64
Received: 65
Received: 84
Received: 85
Received: 159
Received: 160
Received: 270




Messages are missed because all queues/buffers are full and publisher
starts to drop messages (see documentation for ZMQ_PUB:
http://api.zeromq.org/4-2:zmq-socket).






[NOTE]:




  • You should use the high-water mark option in listener/subscriber and advertiser/publisher.

  • These posts are also relevant (Post1 - Post2)


  • sock.setsockopt(zmq.CONFLATE, 1) is another option to get the last message only which defined in subscriber side.






share|improve this answer


























  • Thanks for your suggestions. However, set_hwm is equivalent to setsockopt in this case, it internally calls setsockopt(zmq.SNDHWM, x) or setsockopt(zmq.RCVHWM, x) depending on the socket type. Your code produces the exact same output as mine, adding the hwm on the receiver side doesn't change the behavior, as mentioned in my initial post. The conflate setting "Does not supports multi-part messages" according to ZeroMQ docs, so its not an option.

    – Schwingkopf
    Nov 18 '18 at 16:58













  • @Schwingkopf I double check it.

    – Benyamin Jafari
    Nov 18 '18 at 17:00











  • Do you mean "I have double checked it, it's working" or "I will double check that its still not working, as you state" ?

    – Schwingkopf
    Nov 20 '18 at 22:04











  • @Schwingkopf No, on your case didn't work, I had the same problem, but I couldn't resolve it using hwm then my problem fixed using conflate option.

    – Benyamin Jafari
    Nov 21 '18 at 20:25











  • @Schwingkopf Also I open a github issue in pyzmq repository.

    – Benyamin Jafari
    Nov 21 '18 at 20:27














1












1








1







With borrowing an answer to the issue which I opened in Github, I've updated my answer as follows:






Messages are held in operating system's network buffers. I have found
HWMs to be not that useful because of that. Here is modified code
where subscriber misses messages:



import time
import pickle
import zmq
from threading import Thread
import os

ctx = zmq.Context()

def pub_thread():
pub = ctx.socket(zmq.PUB)
pub.setsockopt(zmq.SNDHWM, 2)
pub.setsockopt(zmq.SNDBUF, 2*1024) # See: http://api.zeromq.org/4-2:zmq-setsockopt
pub.bind('tcp://*:5555')
i = 0
while True:
time.sleep(0.001)
pub.send_string(str(i), zmq.SNDMORE)
pub.send(os.urandom(1024))
i += 1

def sub_thread():
sub = ctx.socket(zmq.SUB)
sub.setsockopt(zmq.SUBSCRIBE, b'')
sub.setsockopt(zmq.RCVHWM, 2)
sub.setsockopt(zmq.RCVBUF, 2*1024)
sub.connect('tcp://localhost:5555')
while True:
time.sleep(0.1)
msg, _ = sub.recv_multipart()
print("Received:", msg.decode())

t_pub = Thread(target=pub_thread)
t_pub.start()
sub_thread()




Output looks something like this:



Received: 0
Received: 1
Received: 2
Received: 3
Received: 4
Received: 5
Received: 6
Received: 47
Received: 48
Received: 64
Received: 65
Received: 84
Received: 85
Received: 159
Received: 160
Received: 270




Messages are missed because all queues/buffers are full and publisher
starts to drop messages (see documentation for ZMQ_PUB:
http://api.zeromq.org/4-2:zmq-socket).






[NOTE]:




  • You should use the high-water mark option in listener/subscriber and advertiser/publisher.

  • These posts are also relevant (Post1 - Post2)


  • sock.setsockopt(zmq.CONFLATE, 1) is another option to get the last message only which defined in subscriber side.






share|improve this answer















With borrowing an answer to the issue which I opened in Github, I've updated my answer as follows:






Messages are held in operating system's network buffers. I have found
HWMs to be not that useful because of that. Here is modified code
where subscriber misses messages:



import time
import pickle
import zmq
from threading import Thread
import os

ctx = zmq.Context()

def pub_thread():
pub = ctx.socket(zmq.PUB)
pub.setsockopt(zmq.SNDHWM, 2)
pub.setsockopt(zmq.SNDBUF, 2*1024) # See: http://api.zeromq.org/4-2:zmq-setsockopt
pub.bind('tcp://*:5555')
i = 0
while True:
time.sleep(0.001)
pub.send_string(str(i), zmq.SNDMORE)
pub.send(os.urandom(1024))
i += 1

def sub_thread():
sub = ctx.socket(zmq.SUB)
sub.setsockopt(zmq.SUBSCRIBE, b'')
sub.setsockopt(zmq.RCVHWM, 2)
sub.setsockopt(zmq.RCVBUF, 2*1024)
sub.connect('tcp://localhost:5555')
while True:
time.sleep(0.1)
msg, _ = sub.recv_multipart()
print("Received:", msg.decode())

t_pub = Thread(target=pub_thread)
t_pub.start()
sub_thread()




Output looks something like this:



Received: 0
Received: 1
Received: 2
Received: 3
Received: 4
Received: 5
Received: 6
Received: 47
Received: 48
Received: 64
Received: 65
Received: 84
Received: 85
Received: 159
Received: 160
Received: 270




Messages are missed because all queues/buffers are full and publisher
starts to drop messages (see documentation for ZMQ_PUB:
http://api.zeromq.org/4-2:zmq-socket).






[NOTE]:




  • You should use the high-water mark option in listener/subscriber and advertiser/publisher.

  • These posts are also relevant (Post1 - Post2)


  • sock.setsockopt(zmq.CONFLATE, 1) is another option to get the last message only which defined in subscriber side.







share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 23 '18 at 21:03

























answered Nov 18 '18 at 11:50









Benyamin JafariBenyamin Jafari

2,91132038




2,91132038













  • Thanks for your suggestions. However, set_hwm is equivalent to setsockopt in this case, it internally calls setsockopt(zmq.SNDHWM, x) or setsockopt(zmq.RCVHWM, x) depending on the socket type. Your code produces the exact same output as mine, adding the hwm on the receiver side doesn't change the behavior, as mentioned in my initial post. The conflate setting "Does not supports multi-part messages" according to ZeroMQ docs, so its not an option.

    – Schwingkopf
    Nov 18 '18 at 16:58













  • @Schwingkopf I double check it.

    – Benyamin Jafari
    Nov 18 '18 at 17:00











  • Do you mean "I have double checked it, it's working" or "I will double check that its still not working, as you state" ?

    – Schwingkopf
    Nov 20 '18 at 22:04











  • @Schwingkopf No, on your case didn't work, I had the same problem, but I couldn't resolve it using hwm then my problem fixed using conflate option.

    – Benyamin Jafari
    Nov 21 '18 at 20:25











  • @Schwingkopf Also I open a github issue in pyzmq repository.

    – Benyamin Jafari
    Nov 21 '18 at 20:27



















  • Thanks for your suggestions. However, set_hwm is equivalent to setsockopt in this case, it internally calls setsockopt(zmq.SNDHWM, x) or setsockopt(zmq.RCVHWM, x) depending on the socket type. Your code produces the exact same output as mine, adding the hwm on the receiver side doesn't change the behavior, as mentioned in my initial post. The conflate setting "Does not supports multi-part messages" according to ZeroMQ docs, so its not an option.

    – Schwingkopf
    Nov 18 '18 at 16:58













  • @Schwingkopf I double check it.

    – Benyamin Jafari
    Nov 18 '18 at 17:00











  • Do you mean "I have double checked it, it's working" or "I will double check that its still not working, as you state" ?

    – Schwingkopf
    Nov 20 '18 at 22:04











  • @Schwingkopf No, on your case didn't work, I had the same problem, but I couldn't resolve it using hwm then my problem fixed using conflate option.

    – Benyamin Jafari
    Nov 21 '18 at 20:25











  • @Schwingkopf Also I open a github issue in pyzmq repository.

    – Benyamin Jafari
    Nov 21 '18 at 20:27

















Thanks for your suggestions. However, set_hwm is equivalent to setsockopt in this case, it internally calls setsockopt(zmq.SNDHWM, x) or setsockopt(zmq.RCVHWM, x) depending on the socket type. Your code produces the exact same output as mine, adding the hwm on the receiver side doesn't change the behavior, as mentioned in my initial post. The conflate setting "Does not supports multi-part messages" according to ZeroMQ docs, so its not an option.

– Schwingkopf
Nov 18 '18 at 16:58







Thanks for your suggestions. However, set_hwm is equivalent to setsockopt in this case, it internally calls setsockopt(zmq.SNDHWM, x) or setsockopt(zmq.RCVHWM, x) depending on the socket type. Your code produces the exact same output as mine, adding the hwm on the receiver side doesn't change the behavior, as mentioned in my initial post. The conflate setting "Does not supports multi-part messages" according to ZeroMQ docs, so its not an option.

– Schwingkopf
Nov 18 '18 at 16:58















@Schwingkopf I double check it.

– Benyamin Jafari
Nov 18 '18 at 17:00





@Schwingkopf I double check it.

– Benyamin Jafari
Nov 18 '18 at 17:00













Do you mean "I have double checked it, it's working" or "I will double check that its still not working, as you state" ?

– Schwingkopf
Nov 20 '18 at 22:04





Do you mean "I have double checked it, it's working" or "I will double check that its still not working, as you state" ?

– Schwingkopf
Nov 20 '18 at 22:04













@Schwingkopf No, on your case didn't work, I had the same problem, but I couldn't resolve it using hwm then my problem fixed using conflate option.

– Benyamin Jafari
Nov 21 '18 at 20:25





@Schwingkopf No, on your case didn't work, I had the same problem, but I couldn't resolve it using hwm then my problem fixed using conflate option.

– Benyamin Jafari
Nov 21 '18 at 20:25













@Schwingkopf Also I open a github issue in pyzmq repository.

– Benyamin Jafari
Nov 21 '18 at 20:27





@Schwingkopf Also I open a github issue in pyzmq repository.

– Benyamin Jafari
Nov 21 '18 at 20:27


















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53356451%2fpyzmq-high-water-mark-not-working-on-pub-socket%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

鏡平學校

ꓛꓣだゔៀៅຸ໢ທຮ໕໒ ,ໂ'໥໓າ໼ឨឲ៵៭ៈゎゔit''䖳𥁄卿' ☨₤₨こゎもょの;ꜹꟚꞖꞵꟅꞛေၦေɯ,ɨɡ𛃵𛁹ޝ޳ޠ޾,ޤޒޯ޾𫝒𫠁သ𛅤チョ'サノބޘދ𛁐ᶿᶇᶀᶋᶠ㨑㽹⻮ꧬ꧹؍۩وَؠ㇕㇃㇪ ㇦㇋㇋ṜẰᵡᴠ 軌ᵕ搜۳ٰޗޮ޷ސޯ𫖾𫅀ल, ꙭ꙰ꚅꙁꚊꞻꝔ꟠Ꝭㄤﺟޱސꧨꧼ꧴ꧯꧽ꧲ꧯ'⽹⽭⾁⿞⼳⽋២៩ញណើꩯꩤ꩸ꩮᶻᶺᶧᶂ𫳲𫪭𬸄𫵰𬖩𬫣𬊉ၲ𛅬㕦䬺𫝌𫝼,,𫟖𫞽ហៅ஫㆔ాఆఅꙒꚞꙍ,Ꙟ꙱エ ,ポテ,フࢰࢯ𫟠𫞶 𫝤𫟠ﺕﹱﻜﻣ𪵕𪭸𪻆𪾩𫔷ġ,ŧآꞪ꟥,ꞔꝻ♚☹⛵𛀌ꬷꭞȄƁƪƬșƦǙǗdžƝǯǧⱦⱰꓕꓢႋ神 ဴ၀க௭எ௫ឫោ ' េㇷㇴㇼ神ㇸㇲㇽㇴㇼㇻㇸ'ㇸㇿㇸㇹㇰㆣꓚꓤ₡₧ ㄨㄟ㄂ㄖㄎ໗ツڒذ₶।ऩछएोञयूटक़कयँृी,冬'𛅢𛅥ㇱㇵㇶ𥄥𦒽𠣧𠊓𧢖𥞘𩔋цѰㄠſtʯʭɿʆʗʍʩɷɛ,əʏダヵㄐㄘR{gỚṖḺờṠṫảḙḭᴮᵏᴘᵀᵷᵕᴜᴏᵾq﮲ﲿﴽﭙ軌ﰬﶚﶧ﫲Ҝжюїкӈㇴffצּ﬘﭅﬈軌'ffistfflſtffतभफɳɰʊɲʎ𛁱𛁖𛁮𛀉 𛂯𛀞నఋŀŲ 𫟲𫠖𫞺ຆຆ ໹້໕໗ๆทԊꧢꧠ꧰ꓱ⿝⼑ŎḬẃẖỐẅ ,ờỰỈỗﮊDžȩꭏꭎꬻ꭮ꬿꭖꭥꭅ㇭神 ⾈ꓵꓑ⺄㄄ㄪㄙㄅㄇstA۵䞽ॶ𫞑𫝄㇉㇇゜軌𩜛𩳠Jﻺ‚Üမ႕ႌႊၐၸဓၞၞၡ៸wyvtᶎᶪᶹစဎ꣡꣰꣢꣤ٗ؋لㇳㇾㇻㇱ㆐㆔,,㆟Ⱶヤマފ޼ޝަݿݞݠݷݐ',ݘ,ݪݙݵ𬝉𬜁𫝨𫞘くせぉて¼óû×ó£…𛅑הㄙくԗԀ5606神45,神796'𪤻𫞧ꓐ㄁ㄘɥɺꓵꓲ3''7034׉ⱦⱠˆ“𫝋ȍ,ꩲ軌꩷ꩶꩧꩫఞ۔فڱێظペサ神ナᴦᵑ47 9238їﻂ䐊䔉㠸﬎ffiﬣ,לּᴷᴦᵛᵽ,ᴨᵤ ᵸᵥᴗᵈꚏꚉꚟ⻆rtǟƴ𬎎

Guess what letter conforming each word