【问题标题】:file path of '/tmp' in Django SessionDjango Session 中“/tmp”的文件路径
【发布时间】:2019-02-27 08:40:33
【问题描述】:

现在我在 django 中使用基于文件的会话来保存数据。

SESSION_ENGINE = "django.contrib.sessions.backends.file"

根据文档,django 将数据保存在/tmp,但我不明白这个/tmp 的实际路径是什么!这是我项目中的目录还是在哪里?

【问题讨论】:

  • 这个问题完全不清楚。 /tmp 一个文件路径,按定义。你在问什么?
  • 不,因为它以斜杠开头,即文件系统的 root(至少在基于 Unix 的操作系统上)。
  • @DanielRoseman 是的,我想知道这个“/tmp”的完整路径,它实际驻留在哪里?
  • 但是您误读了文档,它使用了tmpfile 构造的操作系统。在 Linux 系统上,通常是 /tmp/tmp 是一个用于临时文件的目录:不保证它们会存在相当长一段时间的文件。

标签: django session


【解决方案1】:

我认为您误读了文档,documentation [Django-doc] 说:

您可能还想设置SESSION_FILE_PATH 设置(默认从tempfile.gettempdir() 输出,很可能是/tmp)来控制 Django 存储会话文件的位置。请务必检查您的 Web 服务器是否有权读取和写入此位置。

如果我们查看tempfile.gettempdir() [Python-doc] 上的文档,我们会得到:

返回用于临时文件的目录名称。这 定义所有函数的 dir 参数的默认值 这个模块。

Python 搜索一个标准的目录列表来找到一个 调用用户可以在其中创建文件。列表是:

  1. TMPDIR 环境变量命名的目录。
  2. TEMP 环境变量命名的目录。
  3. TMP 环境变量命名的目录。

特定于平台的位置:

  1. 在 Windows 上,目录 C:\TEMPC:\TMP\TEMP\TMP,按此顺序排列。
  2. 在所有其他平台上,目录/tmp/var/tmp/usr/tmp 按顺序排列。

作为最后的手段,当前工作目录。

本次搜索的结果被缓存,见tempdir的描述 下面。

因此,尽管在基于 Unix 的系统(Linux、BSD、Mac OS X 等)上,它将存储在 /tmp,这取决于操作系统。

对于基于Unix的文件系统,如果前面有一个斜杠(/),则表示一个绝对路径,所以它是tmp目录文件系统的>root。有关 Unix 文件路径的更多信息,请参阅this article [geeksforgeeks]

但是,如果您将 SESSION_FILE_PATH 设置为特定路径,则将使用该路径。

请注意,临时文件是临时文件。通常,您应该假设重启后文件仍然存在。

【讨论】:

    猜你喜欢
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 2013-05-25
    • 1970-01-01
    相关资源
    最近更新 更多