requests timeouts are now enforced (#255)

pull/148/head
Chris Caron 2020-07-22 21:37:06 -04:00 committed by GitHub
parent 3c8b06667b
commit 89336f8105
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
51 changed files with 86 additions and 17 deletions

View File

@ -98,6 +98,16 @@ class URLBase(object):
# Throttle
request_rate_per_sec = 0
# The connect timeout is the number of seconds Requests will wait for your
# client to establish a connection to a remote machine (corresponding to
# the connect()) call on the socket.
request_connect_timeout = 4.0
# The read timeout is the number of seconds the client will wait for the
# server to send a response.
request_read_timeout = 2.5
# Handle
# Maintain a set of tags to associate with this specific notification
tags = set()
@ -466,6 +476,13 @@ class URLBase(object):
def app_url(self):
return self.asset.app_url
@property
def request_timeout(self):
"""This is primarily used to fullfill the `timeout` keyword argument
that is used by requests.get() and requests.put() calls.
"""
return (self.request_connect_timeout, self.request_read_timeout)
@staticmethod
def parse_url(url, verify_host=True):
"""Parses the URL and returns it broken apart into a dictionary.

View File

@ -47,10 +47,6 @@ class AttachHTTP(AttachBase):
# The default secure protocol
secure_protocol = 'https'
# The maximum number of seconds to wait for a connection to be established
# before out-right just giving up
connection_timeout_sec = 5.0
# The number of bytes in memory to read from the remote source at a time
chunk_size = 8192
@ -129,7 +125,7 @@ class AttachHTTP(AttachBase):
auth=auth,
params=self.qsd,
verify=self.verify_certificate,
timeout=self.connection_timeout_sec,
timeout=self.request_timeout,
stream=True) as r:
# Handle Errors

View File

@ -58,10 +58,6 @@ class ConfigHTTP(ConfigBase):
# The default secure protocol
secure_protocol = 'https'
# The maximum number of seconds to wait for a connection to be established
# before out-right just giving up
connection_timeout_sec = 5.0
# If an HTTP error occurs, define the number of characters you still want
# to read back. This is useful for debugging purposes, but nothing else.
# The idea behind enforcing this kind of restriction is to prevent abuse
@ -185,7 +181,7 @@ class ConfigHTTP(ConfigBase):
headers=headers,
auth=auth,
verify=self.verify_certificate,
timeout=self.connection_timeout_sec,
timeout=self.request_timeout,
stream=True) as r:
# Handle Errors

View File

@ -279,6 +279,7 @@ class NotifyBoxcar(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
# Boxcar returns 201 (Created) when successful

View File

@ -221,6 +221,7 @@ class NotifyClickSend(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -304,6 +304,7 @@ class NotifyD7Networks(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code not in (

View File

@ -353,6 +353,7 @@ class NotifyDiscord(NotifyBase):
headers=headers,
files=files,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code not in (
requests.codes.ok, requests.codes.no_content):

View File

@ -207,6 +207,7 @@ class NotifyEmby(NotifyBase):
headers=headers,
data=dumps(payload),
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
@ -370,6 +371,7 @@ class NotifyEmby(NotifyBase):
url,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
@ -449,6 +451,7 @@ class NotifyEmby(NotifyBase):
url,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code not in (
@ -550,6 +553,7 @@ class NotifyEmby(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code not in (
requests.codes.ok,

View File

@ -269,6 +269,7 @@ class NotifyEnigma2(NotifyBase):
headers=headers,
auth=auth,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:

View File

@ -131,6 +131,7 @@ class NotifyFaast(NotifyBase):
data=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -269,6 +269,7 @@ class NotifyFlock(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -309,6 +309,7 @@ class NotifyGitter(NotifyBase):
data=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:

View File

@ -80,9 +80,10 @@ class NotifyGotify(NotifyBase):
# Disable throttle rate
request_rate_per_sec = 0
# If no bytes have been received on the underlining socket for
# connection_timeout seconds, close the connection.
connection_timeout = 2.5
# The connect timeout is the number of seconds Requests will wait for your
# client to establish a connection to a remote machine (corresponding to
# the connect()) call on the socket.
request_connect_timeout = 2.5
# Define object templates
templates = (
@ -195,7 +196,7 @@ class NotifyGotify(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.connection_timeout,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -242,6 +242,7 @@ class NotifyIFTTT(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
self.logger.debug(
u"IFTTT HTTP response headers: %r" % r.headers)

View File

@ -215,6 +215,7 @@ class NotifyJSON(NotifyBase):
headers=headers,
auth=auth,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -280,6 +280,7 @@ class NotifyJoin(NotifyBase):
data=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:

View File

@ -263,6 +263,7 @@ class NotifyKavenegar(NotifyBase):
params=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code not in (

View File

@ -163,6 +163,7 @@ class NotifyKumulos(NotifyBase):
headers=headers,
auth=auth,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -276,6 +276,7 @@ class NotifyMSG91(NotifyBase):
data=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:

View File

@ -240,6 +240,7 @@ class NotifyMSTeams(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -269,6 +269,7 @@ class NotifyMailgun(NotifyBase):
data=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:

View File

@ -319,6 +319,7 @@ class NotifyMatrix(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem
@ -927,6 +928,7 @@ class NotifyMatrix(NotifyBase):
params=params,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
response = loads(r.content)

View File

@ -227,6 +227,7 @@ class NotifyMatterMost(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:

View File

@ -234,6 +234,7 @@ class NotifyMessageBird(NotifyBase):
data=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
# Sample output of a successful transmission

View File

@ -280,6 +280,7 @@ class NotifyNexmo(NotifyBase):
data=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:

View File

@ -185,6 +185,7 @@ class NotifyNextcloud(NotifyBase):
headers=headers,
auth=auth,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -228,6 +228,7 @@ class NotifyNotica(NotifyBase):
headers=headers,
auth=auth,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -288,6 +288,7 @@ class NotifyNotifico(NotifyBase):
params=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -402,6 +402,7 @@ class NotifyOffice365(NotifyBase):
data=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code not in (

View File

@ -191,6 +191,7 @@ class NotifyProwl(NotifyBase):
data=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -315,6 +315,7 @@ class NotifyPushBullet(NotifyBase):
files=files,
auth=auth,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
try:

View File

@ -693,6 +693,7 @@ class NotifyPushSafer(NotifyBase):
data=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
try:

View File

@ -267,6 +267,7 @@ class NotifyPushed(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:

View File

@ -199,6 +199,7 @@ class NotifyPushjet(NotifyBase):
headers=headers,
auth=auth,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -434,6 +434,7 @@ class NotifyPushover(NotifyBase):
files=files,
auth=auth,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:

View File

@ -476,6 +476,7 @@ class NotifyRocketChat(NotifyBase):
data=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem
@ -529,6 +530,7 @@ class NotifyRocketChat(NotifyBase):
api_url,
data=payload,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem
@ -595,6 +597,7 @@ class NotifyRocketChat(NotifyBase):
api_url,
headers=self.headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -236,6 +236,7 @@ class NotifyRyver(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:

View File

@ -342,6 +342,7 @@ class NotifySNS(NotifyBase):
data=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:

View File

@ -361,6 +361,7 @@ class NotifySendGrid(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code not in (
requests.codes.ok, requests.codes.accepted):

View File

@ -236,6 +236,7 @@ class NotifySimplePush(NotifyBase):
data=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
# Get our SimplePush response (if it's possible)

View File

@ -322,6 +322,7 @@ class NotifySinch(NotifyBase):
data=json.dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
# The responsne might look like:

View File

@ -505,6 +505,7 @@ class NotifySlack(NotifyBase):
headers=headers,
files=files,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:

View File

@ -145,6 +145,7 @@ class NotifyTechulusPush(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code not in (
requests.codes.ok, requests.codes.no_content):

View File

@ -325,6 +325,7 @@ class NotifyTelegram(NotifyBase):
files=files,
data=payload,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
@ -393,6 +394,7 @@ class NotifyTelegram(NotifyBase):
url,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
@ -597,6 +599,7 @@ class NotifyTelegram(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:

View File

@ -304,6 +304,7 @@ class NotifyTwilio(NotifyBase):
data=payload,
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code not in (

View File

@ -640,7 +640,9 @@ class NotifyTwist(NotifyBase):
api_url,
data=payload,
headers=headers,
verify=self.verify_certificate)
verify=self.verify_certificate,
timeout=self.request_timeout,
)
# Get our JSON content if it's possible
try:
@ -679,7 +681,9 @@ class NotifyTwist(NotifyBase):
api_url,
data=payload,
headers=headers,
verify=self.verify_certificate)
verify=self.verify_certificate,
timeout=self.request_timeout
)
# Get our JSON content if it's possible
try:

View File

@ -510,7 +510,9 @@ class NotifyTwitter(NotifyBase):
data=payload,
headers=headers,
auth=auth,
verify=self.verify_certificate)
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -168,6 +168,7 @@ class NotifyWebexTeams(NotifyBase):
data=dumps(payload),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code not in (
requests.codes.ok, requests.codes.no_content):

View File

@ -264,6 +264,7 @@ class NotifyXBMC(NotifyBase):
headers=headers,
auth=auth,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -234,6 +234,7 @@ class NotifyXML(NotifyBase):
headers=headers,
auth=auth,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem

View File

@ -284,6 +284,7 @@ class NotifyZulip(NotifyBase):
headers=headers,
auth=auth,
verify=self.verify_certificate,
timeout=self.request_timeout,
)
if r.status_code != requests.codes.ok:
# We had a problem