Laravel - 高效地将大量外部 API 消耗到数据库中

Laravel - Efficiently consuming large external API into database

我正在尝试使用 Paypal API 交易端点。

我想获取给定帐户的所有交易。这个数字可能是数百万笔交易中的十分之一。对于这些事务中的每一个,我都需要将其存储在数据库中以供排队作业处理。我一直在尝试找出用 Laravel 提取这么多记录的最佳方法。 Paypal 的最大请求项目限制为每页 20 个。

我最初的想法是创建一个作业,当用户向我提供他们的 API 凭据以获取前 20 个项目并处理它们,然后从第一个包含开始的作业调度一个作业要使用的索引。这将永远循环直到出错。这似乎效果不佳,因为它会导致网关在保存这些 API 凭据时超时,并且对 API 的请求最终会超时(在获取所有事务之前)。我还应该提到,交易总数是未知的,所以链接似乎不是答案,因为没有办法知道要分派多少工作...

想法?获得最适合工作的 API 数据吗?

您可以在第一个作业结束时分派相同的作业,该作业查询您当前的数据库以查找该作业的交易起始索引。

所以即使你的工作出错了,你也可以重新派发它,然后它会从之前结束的地方恢复

是的,工作很顺利。我对 paypal api 不熟悉,但似乎请求是有速率限制的 paypal rate limiting.. 你可能想稍微延迟你的 api 请求.. 你也可以做一个 class 通过跟踪您发出的最新请求来监控您的 api 请求消耗,并且在作业中您可以确定何时触发下一个请求并将其记录在数据库中...

我的拙见 请不要提取所有数据,您的数据库会很快膨胀,并且每次您拥有一个新帐户时都需要扩展,这不是一件容易的事。

可能您需要 link 您的应用程序与其他数据引擎(如 AWS),无论如何我认为最好的想法是创建一个 APi,仅提取最重要的数据,建立索引并保留另一个端点中的所有大数据,如果需要,您可以在那里访问它们