diff --git a/backend/apps/system/crud/assistant.py b/backend/apps/system/crud/assistant.py index 5cd27af8..a90528b3 100644 --- a/backend/apps/system/crud/assistant.py +++ b/backend/apps/system/crud/assistant.py @@ -130,7 +130,8 @@ def get_ds_from_api(self): cookies[item['key']] = item['value'] if item['target'] == 'param': param[item['key']] = item['value'] - res = requests.get(url=endpoint, params=param, headers=header, cookies=cookies, timeout=10) + timeout = int(config.get('timeout')) if config.get('timeout') else 10 + res = requests.get(url=endpoint, params=param, headers=header, cookies=cookies, timeout=timeout) if res.status_code == 200: result_json: dict[any] = json.loads(res.text) if result_json.get('code') == 0 or result_json.get('code') == 200: diff --git a/frontend/src/views/system/embedded/iframe.vue b/frontend/src/views/system/embedded/iframe.vue index d82bff80..aaacab96 100644 --- a/frontend/src/views/system/embedded/iframe.vue +++ b/frontend/src/views/system/embedded/iframe.vue @@ -84,6 +84,7 @@ const certificateForm = reactive(cloneDeep(defaultCertificateForm)) const defaultUrlForm = { endpoint: '', + timeout: 10, encrypt: false, aes_key: '', aes_iv: '', @@ -342,6 +343,14 @@ const validateCertificate = (_: any, value: any, callback: any) => { } } +const validateTimeout = (_: any, value: any, callback: any) => { + if (value === null) { + callback(new Error(t('datasource.please_enter') + t('common.empty') + t('ds.form.timeout'))) + } else { + callback() + } +} + const urlRules = { endpoint: [ { @@ -350,6 +359,13 @@ const urlRules = { trigger: 'blur', }, ], + timeout: [ + { + required: true, + validator: validateTimeout, + trigger: 'change', + }, + ], certificate: [ { required: true, @@ -799,6 +815,15 @@ const saveHandler = () => { autocomplete="off" /> + + +