小编Rém*_*ult的帖子

我是否应该使用任务队列(Celery),ayncio或者不使用轮询其他API的API?

我已经用Django编写了一个API,其目的是作为网站后端和我们使用的外部服务之间的桥梁,这样网站就不必处理对外部API的许多请求(CRM,日历事件,电子邮件提供商)等等.).

API主要轮询其他服务,解析结果并将其转发到网站后端.

我最初选择了基于Celery的任务队列,因为在我看来,这是将该处理卸载到另一个实例的正确工具,但我开始认为它并不适合这个目的.

由于网站需要同步响应,我的代码包含很多:

results = my_task.delay().get()

要么

results = chain(fetch_results.s(), parse_results.s()).delay().get()

哪种感觉不适合使用Celery任务.

在拉动数十个请求并并行处理结果(例如定期刷新任务)时效率很高- 但为简单请求(fetch - parse-forward)增加了大量开销,这代表了大部分流量.

我是否应该完全同步这些"简单请求"并保留Celery任务用于特定场景?是否有更符合我的API目的的替代设计(可能涉及asyncio)?


在EBS EC2实例上使用Django,Celery(带有Amazon SQS).

django api-design task-queue celery

4
推荐指数
1
解决办法
244
查看次数

标签 统计

api-design ×1

celery ×1

django ×1

task-queue ×1