瀏覽代碼

feat: optimize db connections in thread (#1601)

tags/0.3.31-fix3
takatost 1 年之前
父節點
當前提交
1f58f15bff
沒有連結到貢獻者的電子郵件帳戶。
共有 1 個檔案被更改,包括 22 行新增19 行删除
  1. 22
    19
      api/services/completion_service.py

+ 22
- 19
api/services/completion_service.py 查看文件

@@ -232,7 +232,7 @@ class CompletionService:
logging.exception("Unknown Error in completion")
PubHandler.pub_error(user, generate_task_id, e)
finally:
db.session.commit()
db.session.remove()

@classmethod
def countdown_and_close(cls, flask_app: Flask, worker_thread, pubsub, detached_user,
@@ -242,22 +242,25 @@ class CompletionService:

def close_pubsub():
with flask_app.app_context():
user = db.session.merge(detached_user)

sleep_iterations = 0
while sleep_iterations < timeout and worker_thread.is_alive():
if sleep_iterations > 0 and sleep_iterations % 10 == 0:
PubHandler.ping(user, generate_task_id)

time.sleep(1)
sleep_iterations += 1

if worker_thread.is_alive():
PubHandler.stop(user, generate_task_id)
try:
pubsub.close()
except Exception:
pass
try:
user = db.session.merge(detached_user)

sleep_iterations = 0
while sleep_iterations < timeout and worker_thread.is_alive():
if sleep_iterations > 0 and sleep_iterations % 10 == 0:
PubHandler.ping(user, generate_task_id)

time.sleep(1)
sleep_iterations += 1

if worker_thread.is_alive():
PubHandler.stop(user, generate_task_id)
try:
pubsub.close()
except Exception:
pass
finally:
db.session.remove()

countdown_thread = threading.Thread(target=close_pubsub)
countdown_thread.start()
@@ -394,7 +397,7 @@ class CompletionService:
logging.exception(e)
raise
finally:
db.session.commit()
db.session.remove()

try:
pubsub.unsubscribe(generate_channel)
@@ -436,7 +439,7 @@ class CompletionService:
logging.exception(e)
raise
finally:
db.session.commit()
db.session.remove()

try:
pubsub.unsubscribe(generate_channel)

Loading…
取消
儲存