使用 Django Celery 向远程 API 发送批量请求的更好方法?

Better way of sending bulk requests to a remote API with Django Celery?

我的 Django 网站上有用户 table 和 24K 用户,我需要通过向速率受限的远程 API 端点发送请求来检索每个用户的信息(15 requests/minute).

所以我的计划是使用 Celery 周期性任务和一个名为 "Job" 的新模型。在我看来有两种方式:
1. 对于每个用户,我将创建一个新的 Job 实例,该实例具有与该用户的 ForeignKey 关系。
2. 将有一个 Job 实例,这个 Job 实例将有一个 "users" ManyToManyField 字段。

然后我将使用 Celery 处理 Job 实例,例如,对于上述第一种方式,我可以在每个 运行 周期性任务上处理一个 Job 实例。但是..每个批量请求系列都会有大量的数据库对象...

我觉得这两个都不好,因为它们是负载很大的操作。我错了吗?我想应该有更方便的方法。你能建议我一个更好的方法吗,或者我的方法足以实施?

您可以向您的用户模型添加一个字段 last_updated,然后您可以设置一个任务 运行 每分钟选择最后更新的 15 个用户

class User(AbstractUser):
    last_updated = models.DateTimeField(default=timezone.now, db_index=True)

def task():
    users = User.objects.order_by('last_updated')[:15]
    for user in users:
        # perform API call and update user.last_updated to be now

这样您就不必设置复杂的作业queue/table