| @@ -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) | |||