我正在Django应用中处理一张图片。我使用了rasterio来处理地理空间图片。我想将输出直接保存到Model中的FileField。我使用了一个tempfile来编写rasterio的输出,并使用了Model.FileField.save
方法希望它能引用我的Model示例。
我有一个简单的模型:
class MaskedLayer(models.Model):
name = models.CharField(max_length=250, blank=True)
file = models.FileField(
upload_to='masked',
null=True,
max_length=500)
然而,在我的任务中,这是一个例子:
from celery import shared_task
import rasterio
import tempfile
from app.models import MaskedLayer
@shared_task
def process_image():
mask_layer_name = 'processed_image.tif'
masked_layer = MaskedLayer.objects.create()
with rasterio.open('example.tif') as dataset: # only example of reading/processing of image
out_image = dataset.read()
with tempfile.NamedTemporaryFile() as tmpfile:
tmpfile.write(out_image)
with rasterio.open(tmpfile.name) as dataset:
masked_layer.file.save(mask_layer_name, File(dataset))
pass
我得到这个响应。我不确定错误。请随意使用**example file。
致命的Python错误:分段故障
当前线程0x00007f453b463740(最新调用优先):文件"/usr/local/lib/python3.11/站点包/django/views/debug. py ",获取回溯帧变量的第232行文件"/usr/local/lib/python3.11/站点包/django/views/debug. py",获取异常回溯帧的第544行文件"/usr/local/lib/python3.11/站点包/django/views/debug. py ",获取回溯帧文件"/usr/local/lib/python3.11/站点包/django/视图/调试. py "中的第490行,获取回溯数据文件"/usr/local/lib/python3.11/站点包/django/视图/调试. py"中的第320行,在get_traceback_text文件"/usr/local/lib/python3.11/站点包/django/utils/log.py "中的第403行,在发射文件"/usr/local/lib/python3.11/日志记录/init. py"中的第125行,在句柄文件"/usr/local/lib/python3.11/日志记录/init. py "中的第978行,调用处理程序文件"/usr/local/lib/python3.11/logging/init. py "中的第1706行,句柄文件"/usr/local/lib/python3.11/logging/init. py"中的第1644行,_log中的第1634行
文件"/usr/local/lib/python3.11/logging/init. py ",错误文件"/usr/local/lib/python3.11/站点包/django/utils/log. py"中的第1518行,日志响应文件"/usr/local/lib/python3.11/站点包/django/core/handlers/exception.py "中的第241行,第143行在响应异常文件"/usr/local/lib/python3.11/站点包/django/core/handlers/exception.py "中,第57行在内部文件"/usr/local/lib/python3.11/站点包/django/utils/deprecation.py"中,* * call文件中的第136行"/usr/local/lib/python3.11/站点包/django/core/handlers/exception.py ",内部文件中的第55行"/usr/local/lib/python3.11/站点包/django/utils/deprection.py",call文件中的第136行"/usr/local/lib/python3.11/站点包/django/core/handlers/exception.py ",内部文件"/usr/local/lib/python3.11/站点包/django/utils/deprecation. py "中的第55行,调用文件"/usr/local/lib/python3.11/站点包/django/core/handlers/exception. py"中的第136行,内部文件"/usr/local/lib/python3.11/站点包/django/utils/deprecation. py "中的第55行,* * call文件中的第136行"/usr/local/lib/python3.11/站点包/django/core/handlers/exception.py ",内部文件中的第55行"/usr/local/lib/python3.11/站点包/django/utils/deprection.py",call文件中的第136行"/usr/local/lib/python3.11/站点包/django/core/handlers/exception.py ",内部文件"/usr/local/lib/python3.11/站点包/django/utils/deprecation. py "中的第55行,调用文件"/usr/local/lib/python3.11/站点包/django/core/handlers/exception. py"中的第136行,内部文件"/usr/local/lib/python3.11/站点包/django/utils/deprecation. py "中的第55行,* * call文件"/usr/local/lib/python3.11/站点包/django/core/handler/exception.py "中的第136行,内部文件"/usr/local/lib/python3.11/站点包/django/core/handler/base.py"中的第55行,获取响应文件"/usr/local/lib/python3.11/站点包/rest_framework/test. py "中的第140行,获取响应文件"/usr/local/lib/python3.11/站点包/django/测试/客户端. py "中的第258行,调用文件"/usr/local/lib/python3.11/站点包/django/测试/客户端. py"中的第153行,请求文件"/usr/local/lib/python3.11/站点包/rest_framework/测试. py "中的第805行,请求文件"/usr/local/lib/python3.11/站点包/rest_framework/test. py "中的第238行、请求文件"/usr/local/lib/python3.11/站点包/django/test/client. py"中的第286行、通用文件"/usr/local/lib/python3.11/站点包/rest_framework/test. py "中的第541行、在通用文件"/usr/local/lib/python3.11/站点包/rest_framework/test. py "中的第234行,在后文件"/usr/local/lib/python3.11/站点包/rest_framework/test. py"中的第210行,在后文件"/usr/src/app/data_management/tests/test_data_management. py "中的第296行,第18行位于测试太阳能pot文件"/usr/local/lib/python3.11/unittest/case. py "中,第579行位于调用测试方法文件"/usr/local/lib/python3.11/unittest/case. py"中,第623行位于运行文件"/usr/local/lib/python3.11/unittest/case. py "中,第678行位于调用中
文件"/usr/local/lib/python3.11/站点包/django/测试/测试用例. py ",设置和调用文件"/usr/local/lib/python3.11/站点包/django/测试/测试用例. py"中的第416行,调用文件"/usr/local/lib/python3.11/单元测试/套件. py "中的第381行,运行文件"/usr/local/lib/python3.11/单元测试/套件. py"中的第122行,* * 呼叫**中的第84行
运行中的文件"/usr/local/lib/python3.11/unittest/runner. py ",第217行
文件"/usr/local/lib/python3.11/站点包/django/test/runner. py ",运行套件文件"/usr/local/lib/python3.11/站点包/django/test/runner. py"中的第980行,运行测试文件"/usr/local/lib/python3.11/站点包/django/core/management/commands/test. py "中的第1058行,句柄文件"/usr/local/lib/python3.11/站点包/django/core/管理/基础. py "中的第68行,执行文件"/usr/local/lib/python3.11/站点包/django/core/管理/基础. py"中的第448行,运行参数文件"/usr/local/lib/python3.11/站点包/django/core/管理/命令/测试. py "中的第402行,运行参数文件"/usr/local/lib/python3.11/站点包/django/core/管理/init. py"中的第24行,执行文件"/usr/local/lib/python3.11/站点包/django/core/管理/init. py "中的行440,执行命令行文件"/usr/src/app/www.example.com"中的行446,manage.py", line 18 in main File "/usr/src/app/manage.py", line 22 in
扩展模块:psycopg2._psycopg,数值.核心._多数组_umath,数值.核心._多数组_测试,数值.线性代数._umath_线性代数,数值. fft._数据包fft_内部,数值.随机._公共,数值.随机.位_生成器,数值.随机._有界_整数,数值.随机._mt19937,数值.随机. mtrand,数值.随机._philox,数值.随机._pcg64,数值.随机._sfc64,数值.随机._生成器,栅格._版本,栅格._错误,光栅._文件路径、光栅._环境、光栅._转换、光栅._基础、www.example.com、光栅._特征、光栅._变形、光栅._io、fiona._错误、fiona._几何、fiona._shim、fiona._环境、fiona.模式、fiona. ogrext、fiona._crs(总计:rasterio.crs, rasterio._features, rasterio._warp, rasterio._io, fiona._err, fiona._geometry, fiona._shim, fiona._env, fiona.schema, fiona.ogrext, fiona._crs (total: 31)
1条答案
按热度按时间hgtggwj01#
到目前为止,我对
rasterio
和celery
并不熟悉,但让我向您展示我的工作实现作为指导:我知道,我编辑了
structure_img
的创建,但这不重要,因为它是特定于我的项目。让我试着把它翻译成您的用例:
我也承认我不知道你提出的错误是想告诉我什么。但是我感觉数据库在抱怨你试图插入的内容。如果你这样寻找一个如何准确修复那个错误的答案,我的答案不是你要找的。它更像是同一个解决方案的替代方法。