阻止多个线程进入变量

时间:2016-12-08 18:29:56

标签: python flask thread-synchronization

我使用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名称来避免这个问题,但是我必须使用时间段来解决这个问题

0 个答案:

没有答案