我使用flask进行网络应用程序,直到我不得不处理多个请求(我正在使用threaded=true
)
我的问题是,如果我得到两个并行请求,那么flask将创建两个线程,他们将尝试创建一个具有相同名称的文件(我必须使用纪元时间作为文件名)
即使我在释放锁定后立即锁定文件,其他线程也会尝试创建一个具有相同名称的文件(因为两个线程都具有相同的name
值
from flask import Flask
import time
app = Flask(__name__)
@app.route('/start', methods=['GET'])
try:
# how can i lock a flask's thread from accessing this part so that two threads can't have files with the same name
name = str(int(time.time()))
with open(name,'w') as FileObj:
FileObj.write('Hey')
except:
abort(500)
return "created a file"
def main():
"""
Main entry point into program execution
PARAMETERS: none
"""
app.run(host='0.0.0.0',threaded=True)
main()
烧瓶线程是否与threading.Lock()
一起使用,如果我在name
周围放锁,两个并行线程会有不同的值吗?
PS:我知道我可以使用random
名称来避免这个问题,但是我必须使用时间段来解决这个问题