Bläddra i källkod

fix: requests timeout (#4370)

Yeuoly 11 månader sedan
förälder
incheckning
16d47923c3

+ 14 - 0
api/core/helper/ssrf_proxy.py

@@ -42,6 +42,20 @@ def delete(url, *args, **kwargs):
         if kwargs['follow_redirects']:
             kwargs['allow_redirects'] = kwargs['follow_redirects']
         kwargs.pop('follow_redirects')
+    if 'timeout' in kwargs:
+        timeout = kwargs['timeout']
+        if timeout is None:
+            kwargs.pop('timeout')
+        elif isinstance(timeout, tuple):
+            # check length of tuple
+            if len(timeout) == 2:
+                kwargs['timeout'] = timeout
+            elif len(timeout) == 1:
+                kwargs['timeout'] = timeout[0]
+            elif len(timeout) > 2:
+                kwargs['timeout'] = (timeout[0], timeout[1])
+        else:
+            kwargs['timeout'] = (timeout, timeout)
     return _delete(url=url, *args, proxies=requests_proxies, **kwargs)
 
 def head(url, *args, **kwargs):

+ 3 - 3
api/core/workflow/nodes/http_request/entities.py

@@ -40,9 +40,9 @@ class HttpRequestNodeData(BaseNodeData):
         data: Union[None, str]
 
     class Timeout(BaseModel):
-        connect: int = MAX_CONNECT_TIMEOUT
-        read:  int = MAX_READ_TIMEOUT
-        write:  int = MAX_WRITE_TIMEOUT
+        connect: Optional[int] = MAX_CONNECT_TIMEOUT
+        read:  Optional[int] = MAX_READ_TIMEOUT
+        write:  Optional[int] = MAX_WRITE_TIMEOUT
 
     method: Literal['get', 'post', 'put', 'patch', 'delete', 'head']
     url: str

+ 6 - 0
api/core/workflow/nodes/http_request/http_request_node.py

@@ -95,8 +95,14 @@ class HttpRequestNode(BaseNode):
         if timeout is None:
             return HTTP_REQUEST_DEFAULT_TIMEOUT
 
+        if timeout.connect is None:
+            timeout.connect = HTTP_REQUEST_DEFAULT_TIMEOUT.connect
         timeout.connect = min(timeout.connect, MAX_CONNECT_TIMEOUT)
+        if timeout.read is None:
+            timeout.read = HTTP_REQUEST_DEFAULT_TIMEOUT.read
         timeout.read = min(timeout.read, MAX_READ_TIMEOUT)
+        if timeout.write is None:
+            timeout.write = HTTP_REQUEST_DEFAULT_TIMEOUT.write
         timeout.write = min(timeout.write, MAX_WRITE_TIMEOUT)
         return timeout