SWI Prolog http_post和http_delete莫名其妙地挂起

SWI Prolog http_post和http_delete莫名其妙地挂起,http,prolog,swi-prolog,Http,Prolog,Swi Prolog,当我尝试使用SWI Prolog的http\u post/4时,如下所示: :- use_module(library(http/http_client). update(URL, Arg) :- http_post(URL, form([update = Arg), _, [status_code(204)]). 当我查询这个规则并观察TCP流量时,我看到HTTP POST请求和带有预期204状态代码的应答都会立即发生。但是,在返回“true”之前,Prolog最多会挂起30秒。发

当我尝试使用SWI Prolog的
http\u post/4
时,如下所示:

:- use_module(library(http/http_client).

update(URL, Arg) :-
    http_post(URL, form([update = Arg), _, [status_code(204)]).
当我查询这个规则并观察TCP流量时,我看到HTTP POST请求和带有预期204状态代码的应答都会立即发生。但是,在返回“true”之前,Prolog最多会挂起30秒。发生了什么事情阻止规则立即返回

我也尝试过这个变体,但它也挂起了:

:- use_module(library(http/http_client).

update(URL, Arg) :-
    http_post(URL, form([update = Arg), Reply, [status_code(204)]),
    close(Reply).
我对
http\u delete/3
也有类似的问题,但对于
http\u get/3

声明http\u post

它相当于http_get/3,只是提供了一个输入文档,该文档是使用http_post_data/3发布的

http_get的选项中有timeout(+timeout)。这可能有助于降低延迟,但由于默认设置为+无限,我担心无法解决问题。似乎您正在调用的服务使连接保持活动状态,直到某个超时

就我个人而言,在https上调用Google API服务时,我不得不使用http_open,而不是http_post…

谢谢你,Dmitri(我的西里尔文已经生锈了,请原谅我翻译错了)。我不知道如何使用反勾号进行格式设置。将
连接(关闭)
添加到
选项
参数成功了!