我有一堆laravel工作,他们连接到外部API,获取一些数据并处理数据.
但是每一个jobs都会创建一个新的HttpClient(Guzzle)和一个到API的新连接,这使得API非常慢.
是否有一种解决方案可以将一个HttpClient(带keep alive)用于所有作业(job)?
顺致敬意,
我有一堆laravel工作,他们连接到外部API,获取一些数据并处理数据.
但是每一个jobs都会创建一个新的HttpClient(Guzzle)和一个到API的新连接,这使得API非常慢.
是否有一种解决方案可以将一个HttpClient(带keep alive)用于所有作业(job)?
顺致敬意,
这是可能实现的,因为队列工作者是一个长期运行的进程.
只要您对队列工作者的设置没有导致其提前退出(例如,较低的最大作业(job)计数或较低的最大时间),就应该可以.
您需要使用singleton模式来重用guzzle客户端.然后你可以在你的工作中重复使用同一个客户端.