【发布时间】:2020-06-23 07:20:24
【问题描述】:
设置:
- 我使用的语言是 Python
- 我正在使用
threaded =True运行一个烧瓶应用程序,当一个端点被命中时,它在烧瓶应用程序内部启动一个线程并返回一个成功启动的线程,状态码为 200。 - 在线程内部,发生了 re.Search,这需要 30-40 秒(最坏情况),一旦线程完成,它会点击回调 URL 完成一个请求。
- 理想情况下,Flask 应用程序能够处理并发请求
问题:
当 re.search 在线程内发生时,flask 应用程序不接受并发请求。我假设某种线程锁定正在发生并且无法弄清楚。
问题:
- 是否可以在具有“线程 = True”的烧瓶应用程序中进行线程处理(使用多处理)?
- 当正则表达式发生时,它会执行任何线程锁定吗?
代码 sn-p:hit_callback 向另一个此问题不需要的 api 发出 post 请求。
import threading
from flask import *
import re
app = Flask(__name__)
@app.route(/text)
def temp():
text = request.json["text"]
def extract_company(text)
attrib_list = ["llc","ltd"] # realone is 700 in length
entity_attrib = r"((\s|^)" + r"(.)?(\s|$)|(\s|^)".join(attrib_list) + r"(\s|$))"
raw_client = re.search("(.*(?:" + entity_attrib + "))", text, re.I)
hit_callback(raw_client)
extract_thread = threading.Thread(target=extract_company, )
extract_thread.start()
return jsonify({"Response": True}), 200
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=4557, threaded=True)
【问题讨论】:
标签: python regex multithreading flask