Erlang httpc:request选项是否阻止同步?

Erlang httpc:request选项是否阻止同步?,erlang,httpc,Erlang,Httpc,在gen_服务器进程p(pid=p)中,执行函数httpc_请求(Url),我发现一些进程可能会在httpc:handle_-answer-receive中阻塞 过程信息(p,当前函数)显示结果: httpc_request(Url) -> HttpOpts = [{timeout, 5000}], Opts = [{sync, true}, {full_result, false}, {body_format, binary}], httpc:request

在gen_服务器进程p(pid=p)中,执行函数
httpc_请求(Url)
,我发现一些进程可能会在httpc:handle_-answer-receive中阻塞

过程信息(p,当前函数)
显示结果:

httpc_request(Url) ->
    HttpOpts = [{timeout, 5000}],
    Opts = [{sync, true}, {full_result, false}, {body_format, binary}],   
    httpc:request(get, {Url, []}, HttpOpts, Opts).
{current_function,{httpc,handle_answer,3}}
[{Ref,HandlePid,P}]
ets:match_对象(httpc_管理器_处理程序_db,{{u=''''u',u=''up})
显示结果:

httpc_request(Url) ->
    HttpOpts = [{timeout, 5000}],
    Opts = [{sync, true}, {full_result, false}, {body_format, binary}],   
    httpc:request(get, {Url, []}, HttpOpts, Opts).
{current_function,{httpc,handle_answer,3}}
[{Ref,HandlePid,P}]
process\u info(HandlePid,[current\u function,status])
显示结果:

httpc_request(Url) ->
    HttpOpts = [{timeout, 5000}],
    Opts = [{sync, true}, {full_result, false}, {body_format, binary}],   
    httpc:request(get, {Url, []}, HttpOpts, Opts).
{current_function,{httpc,handle_answer,3}}
[{Ref,HandlePid,P}]

进程p使用receive等待HandlePid回复,但HandlePid在gen_服务器循环中等待接收tcp数据包。如何解决这个问题?

除非您有充分的理由使用
httpc
,否则不要使用。它没有得到OTP团队的很多支持,使用第三方库可能会更好。我更喜欢hackney,但还有其他的。我不建议为此使用
httpc
。。。我与gen_服务器一起使用过几次,没有任何问题。