python - 如何使用 ID 整数跟踪 Django 中的请求?
问题描述
我开发了一个 Django 应用程序,当用户在其中进行 POST 时,它会在服务器中创建一些 .txt 文件。在请求中创建的所有 txt 文件的名称中都具有相同的 ID 整数,以便区分请求。例如:
with the first POST --> 1_file.txt
with the second POST --> 2_file.txt
为了成功,我的服务器代码(views.py 或 utils.py)中创建 txt 文件的每个函数都有一个 function_name.counter 变量来跟踪每个函数运行的时间(通过用户的 POST):
def getEmail(email):
getEmail.counter += 1
with open(BASE_DIR + str(getEmail.counter) + "_Email.txt", "w") as f:
f.write('%s' % email)
getEmail.counter = 0
但是这种方式非常容易出错,并且随着 Apache 的重新启动,所有 .counter 都变为零。
有没有更有效的方法来取得成功?
解决方案
为了持久存储数据,人们通常使用数据库。RequestMeta
例如,您可以创建一个模型,使用一个 IntegerField 来存储计数。也可以为您的姓名或类型 ( ) 添加一个 TextFieldemail
并在每个请求中获取它:RequestMeta.objects.get_or_create(type='email')
。
或者您可以使用 Django 功能并使用它存储文件。使用 modelRequestFile
和 aFileField
你可以让你的生活更轻松。通过upload_to
您还可以轻松自定义存储文件的位置。请参阅文档。
您也可以将计数器存储在附近的文件中,但由于每个请求都需要 IO 操作,它会慢得多,我不建议这样做。
推荐阅读
- c++ - 在 Windows 10 和 Visual Studio Community 2019 下使用带有 Bazel 的 boost
- mongodb - 无法确定“表达式”的序列化信息
- java - Apache Camel 内存死信队列
- c# - 为什么这段代码不会打印所有范围?(多线程问题)
- swift - Swift:通过引用或“别名”对变量影响结构
- python - 在 Python 中运行单元测试模块
- powershell - Powershell:并行运行函数
- powershell - 如何在字符串中使用 HTML 样式?
- gtk - 如何过滤使用 TreeStore(而不是 ListStore)的 GTK 树视图?
- macos - 架构 x86_64 的未定义符号:“_utimensat”,引用自:libHSdirectory-1.3.3.0.a(Posix.o) 中的 _cazW_info