Django 和动态生成的图像

2024-01-11

我的 Django 应用程序中有一个视图,它使用 PIL 自动创建图像,将其存储在 Nginx 媒体服务器中,并返回一个带有指向其 url 的 img 标签的 html 模板。

这工作正常,但我注意到一个问题。我每访问此视图 5 次,其中就有 1 次图像不会渲染。

我做了一些调查,发现了一些有趣的事情,这是图像正确渲染时的 HTTP 响应标头:

Accept-Ranges:bytes
Connection:keep-alive
Content-Length:14966
Content-Type:image/jpeg
Date:Wed, 18 Aug 2010 15:36:16 GMT
Last-Modified:Wed, 18 Aug 2010 15:36:16 GMT
Server:nginx/0.5.33

这是图像未加载时的标题:

Accept-Ranges:bytes
Connection:keep-alive
Content-Length:0
Content-Type:image/jpeg
Date:Wed, 18 Aug 2010 15:37:47 GMT
Last-Modified:Wed, 18 Aug 2010 15:37:46 GMT
Server:nginx/0.5.33

请注意,内容长度等于零。是什么导致了这种情况?关于如何进一步调试这个问题有什么想法吗?

Edit:当视图被调用时,它会调用模型的“draw”方法。这基本上就是它的作用(为了清楚起见,我删除了大部分代码):

def draw(self):
    # Open/Creates a file
    if not self.image:
        (fd, self.image) = tempfile.mkstemp(dir=settings.IMAGE_PATH, suffix=".jpeg")
        fd2 = os.fdopen(fd, "wb")
    else:
        fd2 = open(os.path.join(settings.SITE_ROOT, self.image), "wb")

    # Creates a PIL Image
    im = Image.new(mode, (width, height))

    # Do some drawing
    .....

    # Saves
    im = im.resize((self.get_size_site(self.width),
                    self.get_size_site(self.height)))
    im.save(fd2, "JPEG")
    fd2.close()

Edit2:这是网站:http://xxxcnn7979.hospedagemdesites.ws:8000/cartao/99/ http://xxxcnn7979.hospedagemdesites.ws:8000/cartao/99/

如果继续按 F5,右侧的图像最终将呈现。


不久前我们在将 HTML 页面写入磁盘时遇到了这个问题。我们的解决方案是写入临时文件,然后自动重命名该文件。您可能还想考虑使用fsync http://docs.python.org/library/os.html#os.fsync.

完整的源代码可以在这里找到:静态生成器/__init__.py http://github.com/ekarulf/staticgenerator/commit/9f462122b799c3e5e713538313c86615d8df37f1,但这里有一些有用的部分:

import os
import stat
import tempfile

...

f, tmpname = tempfile.mkstemp(dir=directory)
os.write(f, content)
# See http://docs.python.org/library/os.html#os.fsync
f.flush()
os.fsync(f.fileno())
os.close(f)
# Ensure it is webserver readable
os.chmod(tmpname, stat.S_IREAD | stat.S_IWRITE | stat.S_IWUSR | stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH)
# Rename is an atomic operation in POSIX
# See: http://docs.python.org/library/os.html#os.rename
os.rename(tmpname, fn)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 和动态生成的图像 的相关文章

  • 替换字符串列表中的 \x00 的最佳方法?

    我有一个来自已解析 PE 文件的值列表 其中包括 x00每个部分末尾的空字节 我希望能够删除 x00字符串中的字节而不删除所有字节 x 文件中的 s 我试过做 replace and re sub 但并没有取得太大成功 使用Python 2
  • nginx - 使用 ssl 支持设置多个 server_name

    我很想使用 nginx 来为具有多个域名和 SSL 的网站提供服务 webmail example com webmail beispiel de 两者都使用相同的虚拟主机 因此我只设置 server name 两次 问题是 我需要 ngi
  • Python 中的六边形自组织映射

    我在寻找六边形 自组织映射 http en wikipedia org wiki Self organizing map在Python上 准备好模块 如果存在的话 绘制六边形单元格的方法 将六边形单元作为数组或其他方式使用的算法 About
  • Django modelForm 中的文件上传

    我正在尝试在 appengine django 中上传文档 使用纯 django 代码成功上传文档 使用 python manage py runsever 但是当我尝试使用 appengine 项目运行 django 时 它给了我错误 E
  • 如何自动替换多个文件的文本内容中的字符?

    我有一个文件夹 myfolder包含许多乳胶表 我需要替换其中每个字符 即替换任何minus sign by an en dash 只是为了确定 我们正在替换连字符INSIDE该文件夹中的所有 tex 文件 我不关心 tex 文件名 手动执
  • 如何将条目中的部分文本加粗并更改其背景颜色?

    我正在创建一个基于 Tkinter 的 GUI 它有一个 Entry 小部件 我想将其文本的一部分加粗并更改其背景颜色 但我不知道我该怎么做 如果我使用文本小部件 我可以只使用标签 但看起来它们不能与条目小部件一起使用 此代码使用文本小部件
  • NLTK、搭配问题:需要解包的值太多(预期为 2)

    我尝试使用 NLTK 检索搭配 但出现错误 我使用内置的古腾堡语料库 I wrote alice nltk corpus gutenberg fileids 7 al nltk corpus gutenberg words alice al
  • 使用正则表达式解析 Snort 警报文件

    我正在尝试使用 Python 中的正则表达式从 snort 警报文件中解析出源 目标 IP 和端口 和时间戳 示例如下 03 09 14 10 43 323717 1 2008015 9 ET MALWARE User Agent Win9
  • Python:当前目录是否自动包含在路径中?

    Python 3 4 通过阅读其他一些 SO 问题 似乎如果moduleName py文件位于当前目录之外 如果要导入它 必须将其添加到路径中sys path insert 0 path to application app folder
  • 反加入熊猫

    我有两个表 我想附加它们 以便仅保留表 A 中的所有数据 并且仅在其键唯一时添加表 B 中的数据 键值在表 A 和 B 中是唯一的 但在某些情况下键将出现在表 A 和 B 中 我认为执行此操作的方法将涉及某种过滤联接 反联接 以获取表 B
  • 使用Python将图像转换为十六进制格式

    我的下面有一个jpg文件tmp folder upload path tmp resized test jpg 我一直在使用下面的代码 Method 1 with open upload path rb as image file enco
  • 使用 python 将文本发送到带有逗号分隔符的列

    如何使用分隔符 在 Excel 中将一列分成两列 并使用 python 命名标题 这是我的代码 import openpyxl w openpyxl load workbook DDdata xlsx active w active a a
  • ValueError:无法插入 ID,已存在

    我有这个数据 ID TIME 1 2 1 4 1 2 2 3 我想按以下方式对数据进行分组ID并计算每组的平均时间和规模 ID MEAN TIME COUNT 1 2 67 3 2 3 00 1 如果我运行此代码 则会收到错误 ValueE
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • CSV 在列中查找最大值并附加新数据

    大约两个小时前 我问了一个关于从网站读取和写入数据的问题 从那时起 我花了最后两个小时试图找到一种方法来从输出的 A 列读取最大日期值 将该值与刷新的网站数据进行比较 并将任何新数据附加到 csv 文件而不覆盖旧的或创建重复项 目前 100
  • 如何在单独的文件中使用 FastAPI Depends 作为端点/路由?

    我在单独的文件中定义了一个 Websocket 端点 例如 from starlette endpoints import WebSocketEndpoint from connection service import Connectio
  • Google App Engine 中的自定义身份验证

    有谁知道或知道我可以在哪里学习如何使用 Python 和 Google App Engine 创建自定义身份验证流程 我不想使用 Google 帐户进行身份验证 并且希望能够创建自己的用户 如果不是专门针对 Google App Engin
  • 将 Scikit-Learn OneHotEncoder 与 Pandas DataFrame 结合使用

    我正在尝试使用 Scikit Learn 的 OneHotEncoder 将 Pandas DataFrame 中包含字符串的列替换为 one hot 编码的等效项 我的下面的代码不起作用 from sklearn preprocessin
  • 将 docker-compose.yml 中的包安装到 docker 容器中

    我是 docker 和 docker compose 的初学者 我需要你的帮助 我正在使用 docker compose 制作 PHP NGINX PostgresQL symfony 开发环境 这里是 web image nginx 1
  • 使用 numpy 加速 for 循环

    下一个 for 循环如何使用 numpy 获得加速 我想这里可以使用一些奇特的索引技巧 但我不知道是哪一个 这里可以使用 einsum 吗 a 0 for i in range len b a numpy mean C d e f b i

随机推荐

  • 无法使用 Appium 在 Android 中单击权限对话框中的“允许”按钮

    我无法使用 Appium Java 在 Android 中点击权限对话框上的 拒绝 或 允许 按钮 在点击这些按钮之前我是否需要添加任何功能 下面是代码 DesiredCapabilities capabilities new Desire
  • 如何使用正则表达式找到 python 字符串中 str.format 的所有占位符? [复制]

    这个问题在这里已经有答案了 我正在创建一个使用用户指定的格式重命名文件的类 该格式将是一个简单的字符串 其str format将调用方法来填充空白 事实证明 我的程序需要提取大括号中包含的变量名称 例如 一个字符串可能包含 user 这应该
  • sbt 构建后 gephi-toolkit 中缺少类

    我正在尝试在 Play 应用程序项目中使用 Gephi toolkit 但在构建项目时遇到了问题 起初 由于一些未解决的依赖关系 我无法构建该项目 作为来自的回答在此输入链接描述 https stackoverflow com questi
  • 短小精悍的 MS Access 更新和插入问题

    我正在使用 Dapper 来更新和插入 Access DB 代码正在运行 不会引发异常 但不会更新数据库中的值 下面是我的代码 sql Append UPDATE drugs repository SET drug name DrugNam
  • 来自波浪线 SVG 的连续波浪动画

    我有一个 SVG 它是用 Adob e Illustrator 构建的波浪线 我正在尝试向其添加连续的波浪状动画 我尝试过 vivus js 并且能够使绘制动画工作 但不能连续工作 我怎样才能开始这样的事情呢 任何答案都可以 无论是纯 CS
  • 我可以使用 -ObjC 以外的链接器标志链接适用于 iOS 的 GoogleMaps SDK

    我正在使用 GoogleMapsSDK 和 Parse 的框架 如果我一起使用它们 由于链接器标志 ObjC Parse 中的错误会触发需要 facebook 键 这是 Parse 论坛和 GoogleMaps 之外的其他框架上有详细记录的
  • 活动菜单项 - asp.net mvc3 母版页

    我一直在四处扫描 试图找到一个合适的解决方案 将 活动 当前 类分配给母版页中的菜单项 关于是否执行此客户端与服务器端 这条线被从中间分开 说实话 我对 JavaScript 和 MVC 都很陌生 所以我没有什么意见 我更愿意以 最干净 和
  • 获取当前页面 url 并更改操作

    我需要给出当前页面 url 并更改操作 url 之后我想在视图文件中回显该内容 我想在视图文件中执行这些操作 而不是控制器 你有什么主意吗 您可以通过以下方式获取当前页面的 url uri Zend Controller Front get
  • jquery.get() - 使用数据作为全局变量的问题

    好吧 我在网上读了很多资料 但仍然没有找到解决我的问题的方法 我需要使用 jquery 方法 get 检查文件的内容是 nok 还是空 我尝试过的事情之一 当然不起作用 但清楚地表明了我的想法 是 document ready functi
  • tabControl 中的关闭按钮

    有没有人可以告诉我如何在 C 中使用 tabControl 在每个选项卡中添加关闭按钮 我计划使用按钮 pic 来替换我的选项卡中的 x 谢谢 无需派生类 这里有一个简洁的片段 http www dotnetthoughts net imp
  • 如何获取 AMP 网站上的查询字符串值?

    有没有办法从 AMP HTML 网站检索查询字符串值并将它们存储在 cookie 中或在链接中使用它们 Example 用户点击广告www example com amp foo bar 打开 AMP 网站 点击链接即可结帐 不是 AMPw
  • HTML 客户端可移植文件生成 - 无需外部资源或服务器调用

    我有以下情况 我在公司内部服务器上设置了一系列 Cron 作业来运行各种旨在检查数据完整性的 PHP 脚本 每个 PHP 脚本都会查询公司数据库 将返回的查询数据格式化为包含一个或多个
  • 如何在“expect script”中启动shell脚本?

    在这个expect脚本中 不会连接ssh服务器 我只想在本地执行一个 sh 文件 这可能吗 例如 bin expect command xxx sh a command which starts a certain shell script
  • 如何将 varchar 转换/转换为日期?

    我有一个数据类型的日期列varchar mm dd yyyy 在 MySQL 5 1 中 如何将其转换为 DATE 这是我到目前为止所拥有的 SELECT id date FROM tableName WHERE CAST SUBSTRIN
  • 画布圆圈看起来模糊

    这是对一些过时或不同问题的更新 例如 画布上的绘图和线条一样模糊 https stackoverflow com questions 8696631 canvas drawings like lines are blurry 如何修复 HT
  • 如何防止我的应用程序出现多个实例

    我发现了 Visual Basic 中的一个错误 在实践中 完成我的应用程序后 单击正常启动的可执行文件 但如果我再次单击可执行文件 exe 会莫名其妙地打开第二个窗口 不必要地启动两个进程 我想知道是否有一种方法 也许在某些设置中 仅当您
  • Google Sheet 插件 onInstall() 和 onOpen() 不起作用

    我正在尝试为 Google Sheets 创建一个附加组件 但运行时出现问题 该附加组件使用以下命令在 附加组件 菜单中创建附加菜单onOpen Google Drive API 的功能 但它不这样做onInstall 所以我被告知添加以下
  • Chrome 的词典自动完成扩展? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我尝试用谷歌搜索这个 但我没有任何运气 chrome 有拼写自动完成扩展吗 就像在 Eclipse 中输入时一样 System out pri 然后
  • WSDL 函数具有相同的名称。如何选择呢?

    我将提供程序 wsdl 与 SoapClient 一起使用 但是当我使用命令 getFunctions 时 我得到如下内容 method1Rsp service method1Req parameters method2Rsp servic
  • Django 和动态生成的图像

    我的 Django 应用程序中有一个视图 它使用 PIL 自动创建图像 将其存储在 Nginx 媒体服务器中 并返回一个带有指向其 url 的 img 标签的 html 模板 这工作正常 但我注意到一个问题 我每访问此视图 5 次 其中就有