Im trying to make a polling mechanism, so im making a background process using "ThreadPoolExecutor", I added a status boolean to my users table so they will only be able to send 1 request at time, but i´ve ran into a problem where I cant change the current_user.status to False inside of the background process is over since its outside of an route.
def background_translation(file_content, w_model, transcription, model, pitch, speech_rate, user_id):
try:
srt_file = whisper_transcribe(file_content, w_model, transcription)
audio = text_to_speech(srt_file, model, pitch, speech_rate)
output = add_stream(audio, file_content)
# Save as user_id.mp4
destination = os.path.join(CONTENT_FOLDER, f"{user_id}.mp4")
shutil.move(output, destination)
print(f"Translation complete: saved to {destination}")
except Exception as e:
print("BGT error during translation:", e)
u/bp.route('/translator', methods=['POST'])
u/login_or_token_required
def translator(user):
#inputs...
user_id = current_user.id
start_process(current_user)
file_extension = secure_filename(filepath.filename)
file_content = os.path.join(UPLOAD_FOLDER, file_extension)
filepath.save(file_content)
print("executor.submit")
executor.submit(
background_translation,
file_content,
w_model,
transcription,
model,
pitch,
speech_rate,
user_id
)
print("Sent")
return jsonify({
"message": "Translation started",
}), 200
I tried to access the query by user_id
user = User.query.get(user_id)