代码之家  ›  专栏  ›  技术社区  ›  Chris W

具有并行HTTP请求的Erlang网络问题

  •  0
  • Chris W  · 技术社区  · 7 年前

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

    第一步是使用来自的地理信息填充此服务器 geonames.org

    我想自动化这个过程,因为GeoNames文件会定期更改,所以我编写了一个函数,尝试并行下载所需的文件。

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

    当我将国家代码列表限制在十几个左右,或者按顺序执行下载时,我的代码工作正常。但是,当我尝试并行请求所有252个文件时,我会收到以下错误:“连接失败” httpc:request/4 .

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

    这将是由于对geonames的请求限制而导致的错误。组织web服务器或我的代码中的某些内容?

    谢谢

    克里斯·W

    1 回复  |  直到 7 年前
        1
  •  0
  •   Tomasz Maciejewski    7 年前

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

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