@@ -181,13 +181,16 @@ def import_file(
181181 db_handle = get_db_outside_request (
182182 tree = tree , view_private = True , readonly = True , user_id = user_id
183183 )
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 ()
191194 update_usage_people (tree = tree , user_id = user_id )
192195 _search_reindex_incremental (
193196 tree = tree ,
@@ -204,8 +207,14 @@ def export_db(
204207 db_handle = get_db_outside_request (
205208 tree = tree , view_private = view_private , readonly = True , user_id = user_id
206209 )
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+
209218 extension = file_type .lstrip ("." )
210219 return {
211220 "file_name" : file_name ,
@@ -227,12 +236,16 @@ def generate_report(
227236 db_handle = get_db_outside_request (
228237 tree = tree , view_private = view_private , readonly = True , user_id = user_id
229238 )
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+
236249 return {
237250 "file_name" : file_name ,
238251 "file_type" : file_type ,
@@ -248,17 +261,21 @@ def export_media(
248261 db_handle = get_db_outside_request (
249262 tree = tree , view_private = view_private , readonly = True , user_id = user_id
250263 )
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+
262279 file_size = os .path .getsize (zip_filename )
263280 return {
264281 "file_name" : file_name ,
@@ -275,14 +292,17 @@ def import_media_archive(
275292 db_handle = get_db_outside_request (
276293 tree = tree , view_private = True , readonly = True , user_id = user_id
277294 )
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 ()
286306 return result
287307
288308
@@ -299,10 +319,13 @@ def media_ocr(
299319 db_handle = get_db_outside_request (
300320 tree = tree , view_private = view_private , readonly = True , user_id = user_id
301321 )
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 ()
306329
307330
308331@shared_task (bind = True )
@@ -311,7 +334,10 @@ def check_repair_database(self, tree: str, user_id: str):
311334 db_handle = get_db_outside_request (
312335 tree = tree , view_private = True , readonly = False , user_id = user_id
313336 )
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 ()
315341
316342
317343@shared_task (bind = True )
@@ -328,9 +354,13 @@ def delete_objects(
328354 db_handle = get_db_outside_request (
329355 tree = tree , view_private = True , readonly = False , user_id = user_id
330356 )
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+
336366 update_usage_people (tree = tree , user_id = user_id )
0 commit comments