gpt4 book ai didi

python - Flask 中的线程任务队列

转载 作者:行者123 更新时间:2023-12-04 14:02:27 29 4
gpt4 key购买 nike

<分区>

大家好,我正在使用 flask 构建一个 websocket,目前我正在为每个请求创建一个新线程,以便该线程可以执行一些繁重的处理,而不会花费太多时间从请求中返回一些东西。问题是,在某些时候我打开了太多线程,它开始引起问题,我想知道我是否可以在 flask 中设置一些队列来限制应用程序每次只能创建 8 个线程。

我的代码:

def process_audio(bucket_name, key, _id, extension):
S3_CLIENT = boto3.client('s3', region_name=S3_REGION)
print('Running audio proccessing')
INPUT_FILE = os.path.join(TEMP_PATH, f'{_id}.{extension}')
print(f'Saving downloaded file to {INPUT_FILE}')
S3_CLIENT.download_file(bucket_name, key, INPUT_FILE)
print('File downloaded')
process = stt.process_audio(INPUT_FILE)
print(f'Audio processed by AI returned: "{process}"')
stt.reset()
ai = get_sentimentAI_results(process)
if ai:
print(f'Text processed by AI returned class {ai[0]} with a certainty of {ai[1]}%')
return True

print('Request to sentiment AI endpoint failed for an unkown reason. Check CloudWhatch for more information!')
return False

@app.route('/process/audio', methods=['POST'])
def process_new_audio():
print('Recieving new request')
data = request.data

if not data:
return '', 404

data = json.loads(data)
bucket_name = data.get('bucket_name')
key = data.get('key')
_id = data.get('id')
extension = data.get('file_extension')

if not key or not bucket_name or not _id or not extension:
return '', 404

thread = Thread(target=process_audio, kwargs={'bucket_name': bucket_name, 'key': key, '_id': _id, 'extension': extension})
thread.start()

return '', 200

问题总结:

这个 flask 函数用作由 AWS lambda 触发的 webhook,它创建一个线程来处理数据,而无需让 lambda 等待它完成。我只需要一种创建队列的方法,这样如果发出 100 个请求,我不会有 100 个线程在运行,例如每次只有 5 个线程运行

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com