Greetings,
With PyZMQ versions prior to 13.0.0, we were running into problems with
certain PyZMQ calls getting interrupted by restartable signals (e.g.,
SIGALRM) used by our application. We fixed this problem like this:
while True:
try:
self.context.term()
except zmq.ZMQError as exc:
if exc.errno == EINTR:
log.info('zmq_term interrupted by signal,
restarting')
else:
log.exception('Error terminating ZMQ context')
raise
except BaseException as exc:
log.exception('Error terminating ZMQ context')
raise
else:
break
Note that 0MQ allows term() to be restarted when it gets EINTR
<http://api.zeromq.org/2-1:zmq-term#toc4>.
This worked just fine, but has stopped working in PyZMQ 13.0.0. Now,
instead of a ZMQError with errno set to EINTR, we are getting a
KeyboardInterrupt exception. I think this commit to PyZMQ
<https://github.com/zeromq/pyzmq/commit/3959e4515f86db11f660738df5d36f62478c39e2>
is the cause.
Questions:
1. Was this change in behavior intentional? If so, it probably should
be documented in the release notes.
2. Am I understanding correctly that what needs to be done to fix the
problem in my app is to do "except KeyboardInterrupt" instead of
"except zmq.ZMQError as exc" and not bother to check errno?
Thanks in advance for any help you can provide.
Regards,
Jonathan Kamens
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev