gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 17:12:25 26 4
gpt4 key购买 nike

当我尝试使用 SWI-Prolog 的 http_post/4 时,如下所示:

:- use_module(library(http/http_client).

update(URL, Arg) :-
http_post(URL, form([update = Arg), _, [status_code(204)]).

当我查询此规则并观察 TCP 流量时,我看到 HTTP POST 请求和预期的 204 状态代码回复都立即发生。但是,Prolog 在返回“true”之前最多挂起 30 秒。发生了什么阻止规则立即返回?

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

:- use_module(library(http/http_client).

update(URL, Arg) :-
http_post(URL, form([update = Arg), Reply, [status_code(204)]),
close(Reply).

我对 http_delete/3 有类似的问题,但不是 http_get/3

最佳答案

library docs说明 http_post

It is equivalent to http_get/3, except for providing an input document, which is posted using http_post_data/3.

http_get 的选项中有 timeout(+Timeout)。这可能有助于降低延迟,但由于它默认设置为 +infinite,我担心不会解决问题。似乎您正在调用的服务使连接保持事件状态直至超时。

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

关于http - SWI-Prolog http_post 和 http_delete 莫名其妙地挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11110036/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com