Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
Changelog
=========
* 3.0.5
* Increased default request timeout to 90 seconds. This can also be set by the `INTERCOM_REQUEST_TIMEOUT` environment variable. (`#154 <https://github.com/jkeyes/python-intercom/pull/154>`_)
* 3.0.4
* Added `resource_type` attribute to lightweight classes. (`#153 <https://github.com/jkeyes/python-intercom/pull/153>`_)
* 3.0.3
Expand Down
2 changes: 1 addition & 1 deletion intercom/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
MultipleMatchingUsersError, RateLimitExceeded, ResourceNotFound,
ServerError, ServiceUnavailableError, UnexpectedError, TokenUnauthorizedError)

__version__ = '3.0.4'
__version__ = '3.0.5'


RELATED_DOCS_TEXT = "See https://github.com/jkeyes/python-intercom \
Expand Down
14 changes: 12 additions & 2 deletions intercom/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,31 @@
import certifi
import json
import logging
import os
import requests

logger = logging.getLogger('intercom.request')


def configure_timeout():
"""Configure the request timeout."""
timeout = os.getenv('INTERCOM_REQUEST_TIMEOUT', '90')
try:
return int(timeout)
except ValueError:
logger.warning('%s is not a valid timeout value.', timeout)
return 90


class Request(object):

timeout = 10
timeout = configure_timeout()

def __init__(self, http_method, path, http_session=None):
self.http_method = http_method
self.path = path
self.http_session = http_session


def execute(self, base_url, auth, params):
return self.send_request_to_path(base_url, auth, params)

Expand Down
25 changes: 22 additions & 3 deletions tests/unit/test_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -332,6 +332,25 @@ def it_needs_encoding_or_apparent_encoding(self):
@istest
def it_allows_the_timeout_to_be_changed(self):
from intercom.request import Request
eq_(10, Request.timeout)
Request.timeout = 3
eq_(3, Request.timeout)
try:
eq_(90, Request.timeout)
Request.timeout = 3
eq_(3, Request.timeout)
finally:
Request.timeout = 90

@istest
def it_allows_the_timeout_to_be_configured(self):
import os
from intercom.request import configure_timeout

# check the default
eq_(90, configure_timeout())

# override the default
os.environ['INTERCOM_REQUEST_TIMEOUT'] = '20'
eq_(20, configure_timeout())

# ignore bad timeouts, reset to default 90
os.environ['INTERCOM_REQUEST_TIMEOUT'] = 'abc'
eq_(90, configure_timeout())