使用celery进行数据迁移。这是个好主意吗?

时间:2012-12-30 13:05:15

标签: django celery

我正在进行数据迁移,处理图像/视频,然后下载,然后使用其api发送到Dropbox。

我在整个网络应用程序中使用python-django,但我想这将占用大量带宽,并且可能存在许多问题,其中一个图像的保存失败不应该停止整个迁移。

因此,芹菜是个好主意吗?还是扭曲?

我对这对我的帮助有点困惑。我想到的是为处理单个图像或一小组图像的过程产生一个服务器/线程,从而能够在多个线程上完成它。

1 个答案:

答案 0 :(得分:1)

对你的问题的简短回答“芹菜是一个好主意吗?”是是的”。我已经使用Celery实现了一个类似的过程,用户提交表单,其中包括对Twitter API的异步调用,然后回写到我的数据库中保存的对象。我发现Celery在这项任务中表现突出(没有双关语)。

Celery允许你启动预定义的任务(在某种程度上,可以被认为是“普通的”Python函数,添加了@task装饰器),每次用户表示他们想要下载一个或多个图像。 Celery为您提供针对错误和重试的精细,按任务控制,任务可以单独提交,也可以作为链,和弦或组提交,所有这些都意味着即使单个图像无法下载,您也可以继续满足迁移要求。

我建议花一些时间学习Celery教程here和Celery-Django教程here,它将向您介绍Celery和Django的基本工作流程。

我不能谈论Twisted的优点,但如果你正在寻找关于每个人的相对优势和劣势的意见,这些看起来是一个好的开始: