On Mar 11, 2013, at 13:13, Jonathan Kamens <[email protected]> wrote:
> 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.
>
> 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 is the cause.
>
> Questions:
> Was this change in behavior intentional? If so, it probably should be
> documented in the release notes.
> 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.
This was not intentional, and is fixed in master. There should only be a
difference in behavior if you have non-default signal handler registered.
>
> Regards,
>
> Jonathan Kamens
>
> _______________________________________________
> zeromq-dev mailing list
> [email protected]
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev