Laravel: 使用 HttpClient 的多个作业的解决方案?
Laravel: Solution for multiple jobs using HttpClient?
我有一堆 laravel 作业连接到外部 API,获取一些数据并处理数据。
因为它是非常不同的数据,所以我将它分成多个作业 (GET_DATA_A, GET_DATA_B, ...)
但是每个作业都会创建一个新的 HttpClient (Guzzle) 和一个到 API 的新连接,这使得 API 非常慢。
是否有针对所有作业使用一个 HttpClient(具有保持活动状态)的解决方案?
此致
这是可以实现的,因为队列工作者是一个很长的 运行 进程。
只要您对队列工作程序的设置不会导致它提前退出(例如较低的最大作业数或较低的最大时间),它应该是可能的。
您需要使用单例模式来重用 guzzle 客户端。然后您可以在您的作业中重复使用同一个客户端。
我有一堆 laravel 作业连接到外部 API,获取一些数据并处理数据。 因为它是非常不同的数据,所以我将它分成多个作业 (GET_DATA_A, GET_DATA_B, ...)
但是每个作业都会创建一个新的 HttpClient (Guzzle) 和一个到 API 的新连接,这使得 API 非常慢。
是否有针对所有作业使用一个 HttpClient(具有保持活动状态)的解决方案?
此致
这是可以实现的,因为队列工作者是一个很长的 运行 进程。
只要您对队列工作程序的设置不会导致它提前退出(例如较低的最大作业数或较低的最大时间),它应该是可能的。
您需要使用单例模式来重用 guzzle 客户端。然后您可以在您的作业中重复使用同一个客户端。