gpt4 book ai didi

python - 使用 Flask 时如何安全地写入文件?

转载 作者:太空狗 更新时间:2023-10-30 02:12:39 24 4
gpt4 key购买 nike

我需要在 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'

我猜我需要在 open 和 close 语句周围包装一些代码,但我真的不知道是什么,我正在阅读“Python in a Nutshell”一书中的线程和进程一章,但实际上并不是让我对如何实际使用这些方法有了很大的了解。

如有任何帮助,我们将不胜感激。

最佳答案

使用 logging module .更一般地说,您需要使用锁

import threading

lock = threading.Lock()
...

with lock:
#Open the file and write to it

基本上,这也是 logging 所做的。更准确地说,Handler 对象(实际上写入某些输出,例如文件)实现锁定。

重要的是所有进程都使用相同的 Lock 对象,而不是创建自己的对象。因此,您可以将其放在模块级别或类似级别。

关于python - 使用 Flask 时如何安全地写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14257881/

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