如何仅更改某些特定 XML-RPC 调用的超时

How to change the timeout only for some specific XML-RPC calls

本文关键字:XML-RPC 调用 超时 何仅更      更新时间:2023-10-16

我在 1.25.23 版中使用 XML-RPC for C/C++(通过 CURL)客户端库来:

  • 将数据发送到...

  • 接收(轮询)来自 ...

。XML-RPC 应用程序服务器。

为了减少数据流量(在轮询事件时),我正在尝试为某些(!)特定方法实现"长轮询"机制。为此,我需要仅将这些调用的"全局请求超时"值更改为"无超时",这与全局超时值(例如 3 秒)不同。不幸的是,我认为没有这样做的可能性,而无需为每个请求销毁和重新创建全局客户端实例(xmlrpc_client_cleanup/xmlrpc_client_init2!!!我认为这不是一个好的解决方案。

有没有人经历过使用 XML-RPC over CURL 实现"长轮询"的经验?

提前谢谢你!麦克斯

感谢布莱恩·亨德森!!

我能想到两件事。

首先,您不必使用全局 XML-RPC 客户端。 你可以 有两个专用客户端 - 将一个用于常规 XML-RPC RPC 和 另一个用于需要很长时间的 RPC。

http://xmlrpc-c.sourceforge.net/doc/libxmlrpc_client.html#privateclient

您可以做的另一件事是不使用 Curl 传输超时和 而是使用警报信号 (SIGALRM) 来中断 RPC 时间太长。

http://xmlrpc-c.sourceforge.net/doc/libxmlrpc_client.html#interrupting

"私人客户"的想法为我做到了!!