gpt4 book ai didi

python - Django 中的异步文件写入功能是否需要 Celery?

转载 作者:太空宇宙 更新时间:2023-11-03 14:24:56 26 4
gpt4 key购买 nike

我计划向我的 Django 应用程序添加一些功能,以便在调用某些 View 时将一行数据写入 csv 文件:

    session_dict = collectUserDataFromRequest(request) #....collect parameters from  request

if os.path.isfile(filename):

with open(filename, 'a') as csv_file:
a = csv.DictWriter(csv_file,session_dict.keys())
a.writerow(session_dict)
csv_file.close()

else:

with open(filename, 'w') as csv_file:
w = csv.DictWriter(csv_file,session_dict.keys())
w.writeheader()
w.writerow(session_dict)
csv_file.close()

# then proceed to render the html

我面临的一个问题是当多个用户同时访问我的应用程序时处理潜在的竞争条件。虽然数据可以按任何顺序添加到 csv 文件中,但我不希望某些用户在等待 csv 文件上的锁释放时等待更长时间来加载 View 。因此,我认为要写入可在后台运行的文件的异步字符串数据队列听起来是一个很好的解决方法。

有人告诉我,Celery 是一个很好的框架,可以将异步进程添加到我的 Django 应用程序中。但浏览了几个教程,我发现通常需要额外的框架,例如 Redis。我担心这对于我想要实现的目标来说可能有点过分了。我是否可以使用标准的多处理方法,例如解释的here或者在 Django 生产环境中使用多线程是否还有其他缺点。

最佳答案

第一点:您不应该有并发请求尝试写入同一文件。根据您的用例,您应该将数据存储在知道如何处理并发访问的适当关系数据库中,或者拥有每个用户的文件。

第二点:不,你不一定需要celery来进行异步操作,有quite a few other solutions .

关于python - Django 中的异步文件写入功能是否需要 Celery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47705691/

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