Elixir HTTPoison post请求超时Eixir
我们正在使用一个用Go编写的文件系统。它被端口8888上的RESTAPI用来发布文件。我们遇到的问题是Elixir HTTPoison post请求超时Eixir,elixir,Elixir,我们正在使用一个用Go编写的文件系统。它被端口8888上的RESTAPI用来发布文件。我们遇到的问题是HTTPoison超时 我们发布到一个文件,一次又一次,我们得到HTTPoison请求超时 一些事实: 文件在海藻上得到更新,我们可以看到修改的日期 HTTPoison请求响应总是超时 我试过用卷发棒用于((i=1;i我认为问题在于网络带宽和/或延迟。基本上,你可以用max\u connections:1000同时打开1000个连接。我很确定文件系统本身和网络不会对此感到高兴。相反,你的示例中
HTTPoison
超时
我们发布到一个文件,一次又一次,我们得到HTTPoison请求超时
一些事实:
- 文件在海藻上得到更新,我们可以看到修改的日期
- HTTPoison请求响应总是超时
- 我试过用卷发棒<代码>用于((i=1;i我认为问题在于网络带宽和/或延迟。基本上,你可以用
同时打开1000个连接。我很确定文件系统本身和网络不会对此感到高兴。相反,你的示例中的max\u connections:1000
请求确实是同步运行的,一个接一个curl
将
的值降低到100,甚至更低,然后看看超时是否会消失。您认为错误是随机的,或者可能与您提供的参数有关联吗?错误是随机的。哪些参数?hackney参数?我在谈论传递给max_connections
的参数。但是,由于它们与超时之间没有相关性,这将是一个棘手的问题。是的,这是真的,我一直在努力解决这个问题,已经到了死胡同。您是否尝试使用另一个HTTP客户端来实现,以检查是否只有HTTPoison才会发生这种情况?HTTPoison.post
def seaweedfs_save(camera_exid, timestamp, image, _notes) do [{_, _, _, _, [server]}] = :ets.match_object(:storage_servers, {:_, "RW", :_, :_, :_}) hackney = [pool: :seaweedfs_upload_pool] directory_path = construct_directory_path(camera_exid, timestamp, "recordings", "") file_name = construct_file_name(timestamp) file_path = directory_path <> file_name case HTTPoison.post("#{server.url}#{file_path}", {:multipart, [{file_path, image, []}]}, [], hackney: hackney) do {:ok, response} -> response {:error, error} -> Logger.info "[seaweedfs_save] [#{file_path}] [#{camera_exid}] [#{inspect error}]" end end
:hackney_pool.child_spec(:seaweedfs_upload_pool, [timeout: 5000, max_connections: 1000])