Skip to content

Commit 455c406

Browse files
committed
Merge remote-tracking branch 'origin/main'
2 parents 4bd2b84 + b49d1f6 commit 455c406

File tree

6 files changed

+28
-8
lines changed

6 files changed

+28
-8
lines changed

backend/apps/datasource/models/datasource.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ class DatasourceConf(BaseModel):
7373
filename: str = ''
7474
sheets: List = ''
7575
mode: str = ''
76+
timeout: int = 30
7677

7778
def to_dict(self):
7879
return {
@@ -86,7 +87,8 @@ def to_dict(self):
8687
"dbSchema": self.dbSchema,
8788
"filename": self.filename,
8889
"sheets": self.sheets,
89-
"mode": self.mode
90+
"mode": self.mode,
91+
"timeout": self.timeout
9092
}
9193

9294

backend/apps/db/db.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,17 @@ def get_uri(ds: CoreDatasource):
4848

4949
def get_engine(ds: CoreDatasource) -> Engine:
5050
conf = DatasourceConf(**json.loads(aes_decrypt(ds.configuration))) if ds.type != "excel" else get_engine_config()
51+
if conf.timeout is None:
52+
conf.timeout = 30
5153
if ds.type == "pg" and (conf.dbSchema is not None and conf.dbSchema != ""):
52-
engine = create_engine(get_uri(ds), connect_args={"options": f"-c search_path={conf.dbSchema}"},
53-
pool_timeout=30, pool_size=20, max_overflow=10)
54+
engine = create_engine(get_uri(ds),
55+
connect_args={"options": f"-c search_path={conf.dbSchema}",
56+
"connect_timeout": conf.timeout},
57+
pool_timeout=conf.timeout, pool_size=20, max_overflow=10)
5458
else:
55-
engine = create_engine(get_uri(ds), pool_timeout=30, pool_size=20, max_overflow=10)
59+
engine = create_engine(get_uri(ds), connect_args={"connect_timeout": conf.timeout}, pool_timeout=conf.timeout,
60+
pool_size=20,
61+
max_overflow=10)
5662
return engine
5763

5864

backend/apps/db/engine.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
def get_engine_config():
1414
return DatasourceConf(username=settings.POSTGRES_USER, password=settings.POSTGRES_PASSWORD,
1515
host=settings.POSTGRES_SERVER, port=settings.POSTGRES_PORT, database=settings.POSTGRES_DB,
16-
dbSchema="public")
16+
dbSchema="public", timeout=30) # read engine config
1717

1818

1919
def get_engine_uri(conf: DatasourceConf):
@@ -23,7 +23,9 @@ def get_engine_uri(conf: DatasourceConf):
2323
def get_engine_conn():
2424
conf = get_engine_config()
2525
db_url = get_engine_uri(conf)
26-
engine = create_engine(db_url, connect_args={"options": f"-c search_path={conf.dbSchema}"}, pool_timeout=300,
26+
engine = create_engine(db_url,
27+
connect_args={"options": f"-c search_path={conf.dbSchema}", "connect_timeout": conf.timeout},
28+
pool_timeout=conf.timeout,
2729
pool_size=20,
2830
max_overflow=10)
2931
return engine

frontend/src/i18n/en.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,8 @@
134134
"connect": {
135135
"success": "Connect success",
136136
"failed": "Connect failed"
137-
}
137+
},
138+
"timeout":"Timeout(second)"
138139
}
139140
},
140141
"chat": {

frontend/src/i18n/zh-CN.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,8 @@
134134
"connect": {
135135
"success": "连接成功",
136136
"failed": "连接失败"
137-
}
137+
},
138+
"timeout":"查询超时(秒)"
138139
}
139140
},
140141
"chat": {

frontend/src/views/ds/form.vue

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@
9696
<el-input v-model="form.dbSchema" />
9797
<el-button v-if="false" link type="primary" :icon="Plus">Get Schema</el-button>
9898
</el-form-item>
99+
<el-form-item :label="t('ds.form.timeout')" prop="timeout">
100+
<el-input-number v-model="form.timeout" :min="0" :max="300" controls-position="right" />
101+
</el-form-item>
99102
<span>
100103
<span>{{ t('ds.form.support_version') }}:&nbsp;</span>
101104
<span v-if="form.type === 'sqlServer'">2012+</span>
@@ -211,6 +214,7 @@ const form = ref<any>({
211214
filename: '',
212215
sheets: [],
213216
mode: 'service_name',
217+
timeout: 30,
214218
})
215219
216220
const close = () => {
@@ -246,6 +250,7 @@ const open = (item: any, editTable: boolean = false) => {
246250
form.value.filename = configuration.filename
247251
form.value.sheets = configuration.sheets
248252
form.value.mode = configuration.mode
253+
form.value.timeout = configuration.timeout ? configuration.timeout : 30
249254
}
250255
251256
if (editTable) {
@@ -304,6 +309,7 @@ const open = (item: any, editTable: boolean = false) => {
304309
filename: '',
305310
sheets: [],
306311
mode: 'service_name',
312+
timeout: 30,
307313
}
308314
}
309315
dialogVisible.value = true
@@ -363,6 +369,7 @@ const buildConf = () => {
363369
filename: form.value.filename,
364370
sheets: form.value.sheets,
365371
mode: form.value.mode,
372+
timeout: form.value.timeout,
366373
})
367374
)
368375
const obj = JSON.parse(JSON.stringify(form.value))
@@ -377,6 +384,7 @@ const buildConf = () => {
377384
delete obj.filename
378385
delete obj.sheets
379386
delete obj.mode
387+
delete obj.timeout
380388
return obj
381389
}
382390

0 commit comments

Comments
 (0)