对于一个Celery使用场景的假设。Celery是否适合处理复杂冗长的任务呢?

最近在搞自己的一个小项目,但是对于一些技术的选取有一些迷惑,希望有人能够指点一番。
使用场景,假设获得授权,获取了用户的邮箱登录的密钥,密钥种类分basic auth和Oauth, 前者获得的是邮箱地址和密码, 后者则是邮箱地址和Access Token:

  • 利用celery对于OAuth类型的密钥,定期进行刷新Token的任务

  • 利用邮箱密钥,在固定间隔内登录用户的邮箱,获取指定邮件信息,存储到数据库。

celery是否能够胜任这项任务?考虑到邮件的parsing和存储可能会需要一些时间,当用户数剧增的时候,celery的distributed tasks能否胜任这项任务
如果在服务器端针对每一个邮箱的密钥建立一个local的IMAPClient,是否能够替代Celery还是有更好的解决方案?

阅读 4.5k
2 个回答

Celery的好处是可以方便的横向扩展,官方推荐的是尽量将大任务拆分成小任务.
个人认为除了消息的传递,Celery可以近似的理解成多进程/线程/协程的处理,本身对于任务的耗时什么的并没有太强烈的指向性.
另外,邮件的parsing和存储可以拆分,获取的话可以用协程,处理的话可以用进程,嗯嗯.

如果是我 我就用redis+python

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题