@@ -181,13 +181,16 @@ def import_file(
181
181
db_handle = get_db_outside_request (
182
182
tree = tree , view_private = True , readonly = True , user_id = user_id
183
183
)
184
- run_import (
185
- db_handle = db_handle ,
186
- file_name = file_name ,
187
- extension = extension .lower (),
188
- delete = delete ,
189
- task = self ,
190
- )
184
+ try :
185
+ run_import (
186
+ db_handle = db_handle ,
187
+ file_name = file_name ,
188
+ extension = extension .lower (),
189
+ delete = delete ,
190
+ task = self ,
191
+ )
192
+ finally :
193
+ db_handle .close ()
191
194
update_usage_people (tree = tree , user_id = user_id )
192
195
_search_reindex_incremental (
193
196
tree = tree ,
@@ -204,8 +207,14 @@ def export_db(
204
207
db_handle = get_db_outside_request (
205
208
tree = tree , view_private = view_private , readonly = True , user_id = user_id
206
209
)
207
- prepared_options = prepare_options (db_handle , options )
208
- file_name , file_type = run_export (db_handle , extension , prepared_options , task = self )
210
+ try :
211
+ prepared_options = prepare_options (db_handle , options )
212
+ file_name , file_type = run_export (
213
+ db_handle , extension , prepared_options , task = self
214
+ )
215
+ finally :
216
+ db_handle .close ()
217
+
209
218
extension = file_type .lstrip ("." )
210
219
return {
211
220
"file_name" : file_name ,
@@ -227,12 +236,16 @@ def generate_report(
227
236
db_handle = get_db_outside_request (
228
237
tree = tree , view_private = view_private , readonly = True , user_id = user_id
229
238
)
230
- file_name , file_type = run_report (
231
- db_handle = db_handle ,
232
- report_id = report_id ,
233
- report_options = options ,
234
- language = locale ,
235
- )
239
+ try :
240
+ file_name , file_type = run_report (
241
+ db_handle = db_handle ,
242
+ report_id = report_id ,
243
+ report_options = options ,
244
+ language = locale ,
245
+ )
246
+ finally :
247
+ db_handle .close ()
248
+
236
249
return {
237
250
"file_name" : file_name ,
238
251
"file_type" : file_type ,
@@ -248,17 +261,21 @@ def export_media(
248
261
db_handle = get_db_outside_request (
249
262
tree = tree , view_private = view_private , readonly = True , user_id = user_id
250
263
)
251
- media_handler = get_media_handler (db_handle , tree = tree )
252
- export_path = current_app .config ["EXPORT_DIR" ]
253
- os .makedirs (export_path , exist_ok = True )
254
- file_name = f"{ uuid .uuid4 ()} .zip"
255
- zip_filename = os .path .join (export_path , file_name )
256
- media_handler .create_file_archive (
257
- db_handle = db_handle ,
258
- zip_filename = zip_filename ,
259
- include_private = view_private ,
260
- progress_cb = progress_callback_count (self ),
261
- )
264
+ try :
265
+ media_handler = get_media_handler (db_handle , tree = tree )
266
+ export_path = current_app .config ["EXPORT_DIR" ]
267
+ os .makedirs (export_path , exist_ok = True )
268
+ file_name = f"{ uuid .uuid4 ()} .zip"
269
+ zip_filename = os .path .join (export_path , file_name )
270
+ media_handler .create_file_archive (
271
+ db_handle = db_handle ,
272
+ zip_filename = zip_filename ,
273
+ include_private = view_private ,
274
+ progress_cb = progress_callback_count (self ),
275
+ )
276
+ finally :
277
+ db_handle .close ()
278
+
262
279
file_size = os .path .getsize (zip_filename )
263
280
return {
264
281
"file_name" : file_name ,
@@ -275,14 +292,17 @@ def import_media_archive(
275
292
db_handle = get_db_outside_request (
276
293
tree = tree , view_private = True , readonly = True , user_id = user_id
277
294
)
278
- importer = MediaImporter (
279
- tree = tree ,
280
- user_id = user_id ,
281
- db_handle = db_handle ,
282
- file_name = file_name ,
283
- delete = delete ,
284
- )
285
- result = importer (progress_cb = progress_callback_count (self ))
295
+ try :
296
+ importer = MediaImporter (
297
+ tree = tree ,
298
+ user_id = user_id ,
299
+ db_handle = db_handle ,
300
+ file_name = file_name ,
301
+ delete = delete ,
302
+ )
303
+ result = importer (progress_cb = progress_callback_count (self ))
304
+ finally :
305
+ db_handle .close ()
286
306
return result
287
307
288
308
@@ -299,10 +319,13 @@ def media_ocr(
299
319
db_handle = get_db_outside_request (
300
320
tree = tree , view_private = view_private , readonly = True , user_id = user_id
301
321
)
302
- handler = get_media_handler (db_handle , tree ).get_file_handler (
303
- handle , db_handle = db_handle
304
- )
305
- return handler .get_ocr (lang = lang , output_format = output_format )
322
+ try :
323
+ handler = get_media_handler (db_handle , tree ).get_file_handler (
324
+ handle , db_handle = db_handle
325
+ )
326
+ return handler .get_ocr (lang = lang , output_format = output_format )
327
+ finally :
328
+ db_handle .close ()
306
329
307
330
308
331
@shared_task (bind = True )
@@ -311,7 +334,10 @@ def check_repair_database(self, tree: str, user_id: str):
311
334
db_handle = get_db_outside_request (
312
335
tree = tree , view_private = True , readonly = False , user_id = user_id
313
336
)
314
- return check_database (db_handle , progress_cb = progress_callback_count (self ))
337
+ try :
338
+ return check_database (db_handle , progress_cb = progress_callback_count (self ))
339
+ finally :
340
+ db_handle .close ()
315
341
316
342
317
343
@shared_task (bind = True )
@@ -328,9 +354,13 @@ def delete_objects(
328
354
db_handle = get_db_outside_request (
329
355
tree = tree , view_private = True , readonly = False , user_id = user_id
330
356
)
331
- delete_all_objects (
332
- db_handle = db_handle ,
333
- namespaces = namespaces ,
334
- progress_cb = progress_callback_count (self ),
335
- )
357
+ try :
358
+ delete_all_objects (
359
+ db_handle = db_handle ,
360
+ namespaces = namespaces ,
361
+ progress_cb = progress_callback_count (self ),
362
+ )
363
+ finally :
364
+ db_handle .close ()
365
+
336
366
update_usage_people (tree = tree , user_id = user_id )
0 commit comments