Add a defined timeout on all HTTP calls in notification methods
This commit is contained in:
parent
83e8d62bea
commit
7e78406112
2 changed files with 10 additions and 4 deletions
|
@ -291,6 +291,9 @@ class DefaultConfig(object):
|
||||||
# How often the Garbage Collection worker runs.
|
# How often the Garbage Collection worker runs.
|
||||||
GARBAGE_COLLECTION_FREQUENCY = 30 # seconds
|
GARBAGE_COLLECTION_FREQUENCY = 30 # seconds
|
||||||
|
|
||||||
|
# How long notifications will try to send before timing out.
|
||||||
|
NOTIFICATION_SEND_TIMEOUT = 10
|
||||||
|
|
||||||
# Security scanner
|
# Security scanner
|
||||||
FEATURE_SECURITY_SCANNER = False
|
FEATURE_SECURITY_SCANNER = False
|
||||||
FEATURE_SECURITY_NOTIFICATIONS = False
|
FEATURE_SECURITY_NOTIFICATIONS = False
|
||||||
|
|
|
@ -14,6 +14,8 @@ from workers.queueworker import JobException
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
METHOD_TIMEOUT = app.config.get('NOTIFICATION_SEND_TIMEOUT', 10) # Seconds
|
||||||
|
|
||||||
|
|
||||||
class InvalidNotificationMethodException(Exception):
|
class InvalidNotificationMethodException(Exception):
|
||||||
pass
|
pass
|
||||||
|
@ -190,7 +192,8 @@ class WebhookMethod(NotificationMethod):
|
||||||
headers = {'Content-type': 'application/json'}
|
headers = {'Content-type': 'application/json'}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
resp = requests.post(url, data=json.dumps(payload), headers=headers, cert=SSLClientCert)
|
resp = requests.post(url, data=json.dumps(payload), headers=headers, cert=SSLClientCert,
|
||||||
|
timeout=METHOD_TIMEOUT)
|
||||||
if resp.status_code/100 != 2:
|
if resp.status_code/100 != 2:
|
||||||
error_message = '%s response for webhook to url: %s' % (resp.status_code, url)
|
error_message = '%s response for webhook to url: %s' % (resp.status_code, url)
|
||||||
logger.error(error_message)
|
logger.error(error_message)
|
||||||
|
@ -241,7 +244,7 @@ class FlowdockMethod(NotificationMethod):
|
||||||
}
|
}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
resp = requests.post(url, data=json.dumps(payload), headers=headers)
|
resp = requests.post(url, data=json.dumps(payload), headers=headers, timeout=METHOD_TIMEOUT)
|
||||||
if resp.status_code/100 != 2:
|
if resp.status_code/100 != 2:
|
||||||
error_message = '%s response for flowdock to url: %s' % (resp.status_code, url)
|
error_message = '%s response for flowdock to url: %s' % (resp.status_code, url)
|
||||||
logger.error(error_message)
|
logger.error(error_message)
|
||||||
|
@ -302,7 +305,7 @@ class HipchatMethod(NotificationMethod):
|
||||||
}
|
}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
resp = requests.post(url, data=json.dumps(payload), headers=headers)
|
resp = requests.post(url, data=json.dumps(payload), headers=headers, timeout=METHOD_TIMEOUT)
|
||||||
if resp.status_code/100 != 2:
|
if resp.status_code/100 != 2:
|
||||||
error_message = '%s response for hipchat to url: %s' % (resp.status_code, url)
|
error_message = '%s response for hipchat to url: %s' % (resp.status_code, url)
|
||||||
logger.error(error_message)
|
logger.error(error_message)
|
||||||
|
@ -420,7 +423,7 @@ class SlackMethod(NotificationMethod):
|
||||||
}
|
}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
resp = requests.post(url, data=json.dumps(payload), headers=headers)
|
resp = requests.post(url, data=json.dumps(payload), headers=headers, timeout=METHOD_TIMEOUT)
|
||||||
if resp.status_code/100 != 2:
|
if resp.status_code/100 != 2:
|
||||||
error_message = '%s response for Slack to url: %s' % (resp.status_code, url)
|
error_message = '%s response for Slack to url: %s' % (resp.status_code, url)
|
||||||
logger.error(error_message)
|
logger.error(error_message)
|
||||||
|
|
Reference in a new issue