python - 我的 django 网站在崩溃后停止工作,错误毫无意义
问题描述
我有一个大型 django 3.1 项目,该项目在上周日我最后一次 git push 时正在运行。在那次推动之后,我开始编写一些 bash 部署脚本,并遇到了与测试这些脚本相关的系统崩溃(Ubuntu)(bash 不是我的强项!)。我重新启动了机器,继续工作。我开始对 django 代码进行一些测试,结果发现我的 django 项目中的工作代码以一种非常奇怪的方式被破坏了。
怪异#1 - 进口不工作
在我admin.py
的一个应用程序的一个 save_model 函数中,我有这条线,它在周日工作。
obj2.computed_sha256 = image_processing_utils.compute_sha256(f)
我收到一条image_processing_utils
未定义的 django 错误消息。但是,在 admin 文件的顶部有一个 import 语句from image_processing import image_processing_utils
。我将导入语句复制到上面的行,obj2.computed_sha256 = image_processing_utils.compute_sha256(f)
并且 save_model 函数正常工作。
怪异 #2 - 数据库值不正确
我运行了另一个调用信号的admin
测试。post_delete
我有这些行:
@receiver(post_delete, sender=Face)
def auto_delete_face_metadata(sender, instance, **kwargs):
# delete the Face metadata when the Face object is deleted
doc_id = instance.document.document_id
doc_metadata = DocumentMetaData.objects.filter(document_id=doc_id).first()
metadata = doc_metadata.metadata
我收到一条错误消息,doc_metadata
因此None
它无法访问该字段metadata
。但是,当我单步执行代码时,它doc_id
是正确的 (3056),如果我在同一虚拟环境中的 ./manage.py shell 中运行此代码,则字段元数据就在那里并且具有我期望的值。我还使用 mysql shell 验证了数据是否在数据库中。
>>> from memorabilia.models import DocumentMetaData
>>> DocumentMetaData.objects.get(document_id=3056)
<DocumentMetaData: originals/photo/Rady_Evie_Mary_at_Jackrabbit_Dec_6_2001.tiff>
>>> len(DocumentMetaData.objects.get(document_id=3056).metadata)
15
>>>
我用周日的代码克隆了我的 git repo 到另一个目录,并使用 Meld 查找克隆的 repo 目录和开发代码之间的差异,除了系统崩溃时我正在处理的部署脚本之外没有任何差异,这些差异是正确的。我使用 Wing Pro 7 作为我的 IDE。我已经重新启动了我的机器,但仍然有同样的问题。
我非常感谢您提供的任何帮助,以弄清楚为什么应该工作的代码没有被破坏。
标记
解决方案
推荐阅读
- arrays - 需要帮助使用类显示随机数生成器选择并输出到文件
- swift - 当我在另一个类中声明一个类时有什么问题吗?
- python - 为什么我的 Python POST 请求会引导我进入初始网页?
- python - PyCharm-Project 可执行文件
- reactjs - 嵌套形式的反应和派生状态
- swift - 2 .onReceive() 功能与定时器不工作
- python - 基于模糊匹配查找和替换列表中的值
- python - 分类变量处理期间的数据泄漏?
- javascript - 由于某些奇怪的原因,Js 在控制台中输出错误的日期
- c - C、GTK3 在滚动窗口中传播自然高度不能正常工作