我在模型中有一个过程,它向1000多个用户发送短信,并根据响应相应地更新数据库。此过程需要一段时间才能完成。当响应回来时。我在浏览器中看到502代理错误。原因:从远程服务器读取错误 我该如何解决这个问题?
答案 0 :(得分:0)
根据您的描述,可能会发生超时:
减少请求持续时间(例如,通过以较小批量发送消息)将降低远程服务器或中间服务器超时的风险。它还具有以下优点:您可以在每个批次发送时更新进度。 通过缩小可能的问题编号列表,可以更容易地诊断特定收件人电话号码是否导致远程服务器出错。
您可能正在运行从生成对浏览器的响应的同一进程发送的消息。这将阻止构建页面并快速返回给您,因此远程服务器或中间服务器可能会在您等待邮件发送完成时导致超时。
不要等到长时间运行的操作完成后才能将页面返回到浏览器,而是开始使用消息或作业排队系统(例如Gearman,RabbitMQ)会很有帮助。这些系统允许您将长时间运行的任务放入队列,以便快速生成和返回页面。通过让长时间运行的任务包括进度更新(例如,将进度写入数据库),您可以拥有一个页面,该页面将显示任务运行时的进度。
答案 1 :(得分:0)
非常简单,您只需传递代理Keepalive = On参数
例如:
http://localhost:5000/ Keepalive=On
答案 2 :(得分:0)
我找到了问题的解决方案。我不得不为此改变我的apache配置。我使用的是ProxyPass,不得不暂停10分钟并继续使用我的代理服务器。
在这里找到我的解决方案: