Skip to content

Commit 7710c11

Browse files
authored
Merge pull request #14 from paul-nameless/while-loop-ddos
While loop runs without any interval and potentially can raise a rate limit
2 parents 9c38e2b + 2c0c870 commit 7710c11

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

transloadit/assembly.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,13 +108,14 @@ def create(self, wait=False, resumable=True, retries=3):
108108

109109
if wait:
110110
while not self._assembly_finished(response):
111+
sleep(response.data.get("info", {}).get("retryIn", 1))
111112
response = self.transloadit.get_assembly(
112113
assembly_url=response.data.get("assembly_ssl_url")
113114
)
114115

115116
if self._rate_limit_reached(response) and retries:
116117
# wait till rate limit is expired
117-
sleep(response.data.get("info", {}).get("retryIn", 0))
118+
sleep(response.data.get("info", {}).get("retryIn", 1))
118119
self.create(wait, resumable, retries - 1)
119120

120121
return response

transloadit/request.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
from .response import as_response
1111
from . import __version__
1212

13+
TIMEOUT = 30
14+
1315

1416
class Request:
1517
"""
@@ -43,6 +45,7 @@ def get(self, path, params=None):
4345
self._get_full_url(path),
4446
params=self._to_payload(params),
4547
headers=self.HEADERS,
48+
timeout=TIMEOUT,
4649
)
4750

4851
@as_response
@@ -64,7 +67,11 @@ def post(self, path, data=None, extra_data=None, files=None):
6467
if extra_data:
6568
data.update(extra_data)
6669
return requests.post(
67-
self._get_full_url(path), data=data, files=files, headers=self.HEADERS
70+
self._get_full_url(path),
71+
data=data,
72+
files=files,
73+
headers=self.HEADERS,
74+
timeout=TIMEOUT,
6875
)
6976

7077
@as_response
@@ -79,7 +86,12 @@ def put(self, path, data=None):
7986
Return an instance of <transloadit.response.Response>
8087
"""
8188
data = self._to_payload(data)
82-
return requests.put(self._get_full_url(path), data=data, headers=self.HEADERS)
89+
return requests.put(
90+
self._get_full_url(path),
91+
data=data,
92+
headers=self.HEADERS,
93+
timeout=TIMEOUT,
94+
)
8395

8496
@as_response
8597
def delete(self, path, data=None):
@@ -94,7 +106,10 @@ def delete(self, path, data=None):
94106
"""
95107
data = self._to_payload(data)
96108
return requests.delete(
97-
self._get_full_url(path), data=data, headers=self.HEADERS
109+
self._get_full_url(path),
110+
data=data,
111+
headers=self.HEADERS,
112+
timeout=TIMEOUT,
98113
)
99114

100115
def _to_payload(self, data):

0 commit comments

Comments
 (0)