gpt4 book ai didi

ruby - 如何在 Marklogic 集群之间移动大文档时增加超时时间?

转载 作者:数据小太阳 更新时间:2023-10-29 08:35:27 24 4
gpt4 key购买 nike

我在尝试在两个 MarkLogic 集群之间传输大型文档时不断收到内部服务器错误。 5 分钟后超时。

SVC-SOCRECV: xdmp:http-post(...) Timeout (decodeResponseLine1)

网址看起来像这样:

http://source-host:8020/uri.transfer.xqy?key=/COLLECTION/DB/VeryLargeDoc.xml&srcdb=DB&destdb=DB&desthost=dest-host

我尝试在函数中使用 xdmp:set-request-time-limit(600) 将超时设置为 10 分钟。 xquery 函数:

declare function my-ns:transfer-records(
$record as element(record),
$database as xs:string,
$host as xs:string)
{
let $response :=
xdmp:set-request-time-limit(600,
xdmp:http-post("http://" || $host || ":" || $PORT || "/doc_transfer.xqy?database=" || $database,
<options xmlns="xdmp:http">
<headers>
<content-type>application/gzip</content-type>
</headers>
</options>,
xdmp:gzip($record)
)
)
return
xdmp:set-response-code($response[1]//*:code, $response[1]//*:message)
};

这是行不通的。我应该在哪里修改超时。超时似乎发生在源主机上。

最佳答案

有多个超时可能会打扰您:

  • 保留 xdmp:set-request-time-limit ,或者如果 http-post 太慢,MarkLogic 可能会不耐烦地终止整个语句。
  • 添加 <timeout>xdmp:http-post options确保 http-post 不会取消客户端请求。默认值是组的 http 超时。 (注意:SVC-SOCRECV 似乎表明这是正在发生的事情)
  • 还要确保服务器端的时间限制足够大。将有代码在服务器端运行以编写您发送的任何内容。它将受到 default time limit 的约束, 除非 doc_transfer.xqy包含明确的 xdmp:set-request-time-limit

喂!

关于ruby - 如何在 Marklogic 集群之间移动大文档时增加超时时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49176853/

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