bad*_*eas 4 python thread-safety flask
我需要在Flask服务器上编写一个方法,它将部分请求写入日志文件.但是,如果我理解正确,Flask是多线程的,并且很有可能写入文件是不安全的.
不可否认,我或多或少都是python和多线程编程的新手一般,所以我需要有人稍微握住我的手一点点:)
到目前为止我的代码(略有修改,没有任何部分会让我在网上发布麻烦)
@app.route('/store_test')
def store_test():
now = str(time.time())
ip_address = request.remote_addr
agent = request.user_agent.string
log_data = [now,ip_address,agent]
log_data_string = "\t".join(log_data)
filename = "log.dat"
f = open(filename,'a')
f.write(log_data_string + "\n")
f.close()
return 'OK'
Run Code Online (Sandbox Code Playgroud)
我猜我需要围绕open和close语句包含一些代码,但我不知道是什么,我正在阅读"果壳中的Python"一书中的Threads and Processes章节,它并没有真正给我很多关于如何实际使用这些方法的想法.
任何帮助,将不胜感激.
使用日志记录模块.更一般地说,你需要使用一个锁
import threading
lock = threading.Lock()
...
with lock:
#Open the file and write to it
Run Code Online (Sandbox Code Playgroud)
基本上,这也是这样logging做的.更确切地说,Handler对象(实际写入某些输出,例如文件)实现锁定.
重要的是所有进程都使用相同的Lock对象,而不是创建自己的对象.因此,您可以将其置于模块级或类似级别.
| 归档时间: |
|
| 查看次数: |
4001 次 |
| 最近记录: |