Use the (C) timedelta.total_seconds function when available. But it's
still a bit faster to use numeric timeouts instead of back-and-forth
through timedelta, so do that instead in http1connection.
else:
try:
header_data = yield gen.with_timeout(
- datetime.timedelta(seconds=self._header_timeout),
+ self.stream.io_loop.time() + self._header_timeout,
header_future,
io_loop=self.stream.io_loop)
except gen.TimeoutError:
if isinstance(deadline, numbers.Real):
self.deadline = deadline
elif isinstance(deadline, datetime.timedelta):
- self.deadline = io_loop.time() + _Timeout.timedelta_to_seconds(deadline)
+ now = io_loop.time()
+ try:
+ self.deadline = now + deadline.total_seconds()
+ except AttributeError: # py2.6
+ self.deadline = now + _Timeout.timedelta_to_seconds(deadline)
else:
raise TypeError("Unsupported deadline %r" % deadline)
self.callback = callback