From 411bde4868f6234763abf486fccd50fa63f2e060 Mon Sep 17 00:00:00 2001 From: mprahl Date: Aug 10 2020 22:32:31 +0000 Subject: Use timeouts when making HTTP requests When using the `RequestsSession.request` method, a `timeout` keyword argument is always added to the request. When using the `get` or `post` method directly, it bypasses this default timeout. The requests library will wait forever if no timeout is set, so this can cause outages. --- diff --git a/greenwave/resources.py b/greenwave/resources.py index 72b786e..658a68f 100644 --- a/greenwave/resources.py +++ b/greenwave/resources.py @@ -83,7 +83,8 @@ class ResultsRetriever(BaseRetriever): return results def _make_request(self, params, **request_args): - return requests_session.get( + return requests_session.request( + 'GET', self.url + '/results/latest', params=params, **request_args) @@ -102,7 +103,8 @@ class WaiversRetriever(BaseRetriever): return [waiver for waiver in waivers if waiver['waived']] def _make_request(self, params, **request_args): - return requests_session.post( + return requests_session.request( + 'POST', self.url + '/waivers/+filtered', json={'filters': params}, **request_args) @@ -181,6 +183,6 @@ def retrieve_yaml_remote_rule(url): # NOTE - not cached. def retrieve_decision(greenwave_url, data): - response = requests_session.post(greenwave_url, json=data) + response = requests_session.request('POST', greenwave_url, json=data) response.raise_for_status() return response.json()