• Dolphin
    2020-11-20
    老师,我遇到一个问题,希望可以得到您的帮助。 我在做亚马逊店铺管理的ERP,在我们的业务需求中,有一些任务是从上游服务获取数据,就比如我需要从上游服务获取多个报告,上游服务是有限制请求速率的,所以我这些大量的任务必须控制速率,比如一分钟一个。我尝试在一个异步任务中处理,每个任务执行结束后sleep,但是这样会任务超时。我又想了一种办法是每分钟检测,每分钟执行一次检查有没有新任务,有的话就取一条执行。因为这个每天只需要检查一遍,我这样做一天二十四小时都在检查,后期用户多了以后会比较难处理。 我想实现,有一个任务池,池中又会根据用户区分任务,每个用户的任务相当于一个队列,队列中的每个任务一分钟执行一个。 希望老师可以指点指点。项目基于Django的。

    作者回复: 这是一个设计问题。限速是根据用户维度限速的吗? 大致的思路你可以按照用户把任务存下来,比如放在数据库中。然后每分钟按照每一个用户查询一个待处理的任务去跑,可以异步执行。但你要确保1分钟内能跑完。任务状态有等待中,执行中,执行完。你仍然需要持续检查有没有任务需要处理

    共 2 条评论
    