在 PyRFC 中分块大数据集。可能的?

Chunking big datasets in PyRFC. Possible?

有没有办法使用 SAP-RFC 将 "chunking" 大结果分成几个较小的部分?

根据这些链接,您似乎需要自己实现分块:-(

我想避免这种情况,我希望有办法让 SAP-RFC 库进行分块。

用例:

The result are 100k rows. I would like to fetch 1k rows until all rows are received.

我想这无关紧要,但我会使用 PyRFC 作为我的代码。

据此 issue #60 sap-rfc 无法进行分块。您需要进行几个较小的 RFC 调用。

真可悲。我想在专有的封闭源代码中有数百种肮脏的本土分块解决方案,它们都一遍又一遍地解决同样的问题。

RFC 库在这里不能做太多事情:它只是发出请求,然后从 R/3 系统接收响应。因此,如果 R/3 系统 returns 100k 行,图书馆将接收这 100k 行,如果 R/3 系统 returns 这些行的一部分,图书馆将仅接收这个块...

为了进行分块(或 "paging"),双方(外部程序和被调用的 ABAP 代码)必须以某种方式合作。这是通用库无法做到的。

RFC 基本上遵循 "request-response" 模式,如果你想要更小的响应数据,那么客户端必须进行多次请求,而服务器只需要 return 的一部分 "overall data" 对于这些请求中的每一个。

编辑:我现在也阅读了您的第 60 期,如果您主要关心的是性能,那么您最好直接使用 C/C++ NW RFC 库而不是 Python包装器?

我不熟悉Python是如何工作的,但如果它有点类似于Java/JNI,那么我希望你内存中的所有数据总共有两份:首先 RFC 库从线路接收数据并将其存储在 C 堆上,然后一些 C <-> Python 互操作层需要将该数据复制到 Python 虚拟机?!如果是这种情况,您可以通过在 C/C++.

中编写提取程序来安全地节省 50% 的内存消耗