将图像传递给Celery任务

8

我正在编写的应用程序中,允许用户上传图片,我会对其进行调整大小并自动上传到亚马逊s3。目前,图像调整大小是在视图中直接完成的,我想通过celery将其转移到分布式工作程序上。我的问题是,将图像传递给工作者的最佳方法是什么?我目前的想法是直接将图像存储在数据库中,然后只需将id传递给工作者并让它检索它。有没有比暂时将其存储在数据库中更好的做法,直到可以处理它为止?

2个回答

4

根据celery文档的说明,最好不要将整个图像作为参数传递,这会导致额外的开销。因此,最好先将其保存,然后将照片ID作为参数传递,检索图像并进行调整大小/上传。


1
除了直接保存到PostgreSQL中,还有其他选项吗? - whatWhat
请看这里:https://dev59.com/2lLTa4cB1Zd3GeqPZlQI - hymloth

1
不能直接将实际图像传递给Celery,因为图像无法序列化,但是您可以分解图像并将其所有数据发送到Celery worker,在那里可以轻松地重建图像,然后执行任何需要的操作。
我创建了一个小应用程序,将图像保存工作转移到工作程序中,将调整大小添加到其中并不困难。查看https://github.com/gterzian/django_async

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接