【问题标题】:Django on Google App Engine Flexible: create and remove filesGoogle App Engine 上的 Django 灵活:创建和删除文件
【发布时间】:2020-08-27 09:57:31
【问题描述】:

我在 Google App Engine(灵活的环境)上部署了一个 Django 应用程序。

我可以像这样创建文件和删除文件吗:

with open('myfile.xls', 'w') as file_object:
    #writing to file
os.remove('myfile.xls')

还是使用 NamedTemporaryFile?

现在这段代码可以运行,但是在部署我的应用几天后,我的应用运行缓慢。这与冷启动无关。重新部署修复它。 Сan 文件不会被删除并浪费磁盘空间?还是有别的原因?

【问题讨论】:

    标签: django google-app-engine


    【解决方案1】:

    即使在标准环境中,也不推荐这样做。 Std 中的 Pyhton 提供了位置 /tmp 来写入文件,但鉴于 App Engine 会根据需要进行扩展,因此无法保证以后该文件仍会存在:

    Filesystem:

    运行时包括一个完整的文件系统。文件系统是只读的,但位置 /tmp 是一个在 App Engine 实例的 RAM 中存储数据的虚拟磁盘。

    Organizing COnfiguration Files 中有一个关于Design considerations for instance uptime 的部分,其中提到:

    您的应用应该是“无状态的”,以便实例上不存储任何内容。

    您应该改用Google Cloud Storage。在这里您可以找到Python Google Cloud Storage sample for Google App Engine Flexible Environment 的示例。

    【讨论】:

    • 这是关于您的用例的建议。建议不要使用文件系统,而是使用 GCS o 写入临时文件,此外您的应用程序应该是无状态的。您可以通过SSH 检查您的虚拟机并检查磁盘空间并进行调试,但您可以省去更改解决方案的所有工作量。
    • 谢谢。我知道如何启用 SSH,但是如何检查磁盘空间并列出目录和文件?
    • 您可以执行以下操作:1.sudo docker ps,2.sudo docker exec -it [CONTAINER-NAME] /bin/bash,3.然后运行命令top,您将看到可用内存。 Here the docs
    猜你喜欢
    • 2018-07-15
    • 1970-01-01
    • 2020-04-19
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 2015-06-23
    相关资源
    最近更新 更多