Erlang网络问题与并行HTTP请求

时间:2018-02-09 18:54:40

标签: erlang httprequest

我目前正在构建一个HTTP服务器来提供地理信息。

第一步是使用geonames.org

中的地理信息填充此服务器

我想自动执行此过程,因为GeoNames文件会定期更改,因此我编写了一个尝试并行下载所需文件的功能。

下载初始文本和ZIP文件可以正常工作,但下一步是解析下载的文件countryInfo.txt,提取所有ISO国家/地区代码,然后为每个国家/地区代码下载相应的ZIP文件。

当我将国家/地区代码列表限制为十几个,或者按顺序执行下载时,我的代码运行正常。但是当我尝试并行请求所有252个文件时,我得到了#34;无法连接"来自httpc:request/4的错误。

编码可从[此Git回购]中获得。(https://github.com/ChrisWhealy/Erlang/tree/master/geo_server

错误是由于geonames.org网络服务器上的请求限制还是我的代码中的某些内容?

由于

Chris W

1 个答案:

答案 0 :(得分:1)

产生数百个进程,每个进程连接到同一个服务器通常是一个非常糟糕的主意,很糟糕甚至被认为是attack。很可能一些防火墙规则开始并开始拒绝更多连接。

尝试使用某种线程池(如this)对所有请求进行排队,并行执行大约10-20个请求。