商汇粹外网资源平台

搜索
查看: 2366|回复: 4

知乎在使用 Tornado 时是如何异步处理耗时任务的?有没有可用的开源实现参 ...

[复制链接]

该用户从未签到

3

主题

3

帖子

40

积分

新手上路

Rank: 1

积分
40
发表于 2022-9-21 20:30:33 | 显示全部楼层 |阅读模式
比如对用户发送EMAIL之类的任务。tornado的asynchronous装饰器实现的异步似乎不能满足大批量发送Email的需求?
回复

使用道具 举报

该用户从未签到

11

主题

54

帖子

194

积分

注册会员

Rank: 2

积分
194
发表于 2022-9-21 20:45:08 | 显示全部楼层
我觉得这个和 tornado 没啥关系。tornado 的异步是指异步 IO,在连接挂起的时候不阻塞线程资源,而不是指其他的。像 Email 这样的耗时任务本身就是应该交给后端的独立进程的,芹菜才是做这类事情的吧。
回复

使用道具 举报

该用户从未签到

4

主题

11

帖子

68

积分

注册会员

Rank: 2

积分
68
发表于 2022-9-21 20:59:43 | 显示全部楼层
放入任务队列离线执行。可用的开源任务队列方案很多,Gearman, Celery, Resque, Beanstalkd, Kestrel 等,根据你的需要选择一款合适的即可。甚至最简单的直接放入 Redis 队列都行。有一点注意事项:如果任务队列是存储在内存中的话,记得做好队列和内存占用的监控。有可能队列的消费方挂掉了,但生产方一直在运作,导致任务堆积挤爆内存。
回复

使用道具 举报

该用户从未签到

11

主题

89

帖子

286

积分

中级会员

Rank: 3Rank: 3

积分
286
发表于 2022-9-21 21:14:18 | 显示全部楼层
开线程似乎不太适合,不过Tornado提供AsyncHTTPClient和定时任务等支持,结合其他的后端服务器可以完成。
回复

使用道具 举报

该用户从未签到

11

主题

89

帖子

286

积分

中级会员

Rank: 3Rank: 3

积分
286
发表于 2022-9-21 21:28:53 | 显示全部楼层
直接放到MCQ或类似的队列里,然后单独起程序进行发送吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表