rest - 在 Apache Beam 中经过一定时间后终止进程
问题描述
对于 BigQuery 表中的每个新用户条目,我必须向该用户发送一封电子邮件。
我正在使用 Apache Beam 从 BQ 获取这些条目,对于每个条目,我正在向 RESTful Web 服务发送请求以发送电子邮件并等待响应。
问题是,当请求数量变得太大时,比如一百万,来自 Web 服务的响应来得很晚,Apache Beam 作业处于挂起状态。
有没有办法在一分钟后停止等待响应并继续处理 Apache Beam 中的其他请求?还是让 Web 服务在一分钟后发回超时响应会更好?
我认为后者是有道理的,但我只是想知道考虑到 Apache Beam 中并行运行的事情是否可以选择等待。
解决方案
您必须使用自定义超时参数覆盖 HttpClient 属性:
HttpParams.setConnectionTimeout(params, connectionTimeoutMillis);
HttpParams.setSoTimeout(params, socketTimeoutMillis);
第一个参数允许您指定建立初始连接的超时时间,第二个参数允许您指定套接字在没有数据发送时等待的最长时间。
推荐阅读
- javascript - NodeJS/Express:如何通过将多个输入文本字段与每个自己的文件上传相关联来提交表单?
- ansible - Ansible,线路模块未正确将 JSON 数据保存到文件
- java - flatMap 文档中提到的“映射流”是什么?
- html - Z-index 不与相同的 DIV 重叠
- javascript - JavaScript - 通过深度嵌套的对象键从标准数组中过滤对象?
- python - Django_filters - 未显示带有 ForeignKey 的 MultipleChoiceFilter
- r - 如何将df列表中的所有变量转换为字符
- python - 如何使用 Pandas 在 Cohort Analysis 中使用首次访问者和回访者
- javascript - 你如何使用布尔值在javascript中定义变量
- javascript - 如何在引导弹出窗口中禁用多个 ajax 调用