summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOmer Katz <omer.drow@gmail.com>2019-06-21 10:31:18 +0300
committerGitHub <noreply@github.com>2019-06-21 10:31:18 +0300
commitf3fd99db9fcf668b767579f043e5a90b80f60007 (patch)
tree26c10435f79f1819ff296a46ec0804e067519bae
parentb36bf883fe5d6e896dbcfaf54f2428ebc1d3f210 (diff)
downloadpy-amqp-fix-timeouts.tar.gz
According to Python's documentation, if we don't want timeouts we must set the socket's timeout to Nonefix-timeouts
See https://docs.python.org/3/library/socket.html#socket.socket.settimeout. This commit was triggered by https://github.com/celery/celery/issues/4876#issuecomment-502922066. It could fix the issue as well.
-rw-r--r--amqp/transport.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/amqp/transport.py b/amqp/transport.py
index cc6ae5d..bf31cc4 100644
--- a/amqp/transport.py
+++ b/amqp/transport.py
@@ -64,9 +64,10 @@ class _AbstractTransport(object):
self.raise_on_initial_eintr = raise_on_initial_eintr
self._read_buffer = EMPTY_BUFFER
self.host, self.port = to_host_port(host)
- self.connect_timeout = connect_timeout
- self.read_timeout = read_timeout
- self.write_timeout = write_timeout
+ # If the timeout is 0, set it to none to avoid setting the socket to nonblocking mode
+ self.connect_timeout = connect_timeout or None
+ self.read_timeout = read_timeout or None
+ self.write_timeout = write_timeout or None
self.socket_settings = socket_settings
def connect(self):
@@ -91,7 +92,7 @@ class _AbstractTransport(object):
@contextmanager
def having_timeout(self, timeout):
- if timeout is None:
+ if timeout is None or timeout == 0:
yield self.sock
else:
sock = self.sock