python api创建的会话会一直自动断开,请问有什么办法设置会话时间吗?

我这边创建会话的代码如下:

import dolphindb as ddb
s = ddb.session()
s.connect("localhost", 8848)

在与dolphindb服务进行数据交互的时候,会话经常会自动断开,请问有什么办法设置会话时间吗?



请先 登录 后评论

最佳答案 2023-01-29 10:06

可以在DolphinDB python api时设置下面两个参数,让会话在网络异常的情况下不中断:

(1)调用connect函数时,设置keepAliveTime参数

keepAliveTime:通过配置 keepAliveTime 参数可以设置 TCP 的存活检测机制的检测时长,从而能够在网络不稳定条件下,及时释放半打开的 TCP 连接。默认值为30秒。

keepAliveTime主要是网络通信不稳定的情况,server服务器检测时,认为这个连接还存在,不主动关闭这个连接的时间。比如网络中断30s,我设置这个数为50,那么网络恢复后,这个session还是存在的。

(2)调用ddb.session.setTimeout()

session 对象的静态方法 setTimeOut,用于设置数据包被发送后未接收到 ACK 确认时,TCP 连接的最大等待时长(TCP_USER_TIMEOUT 选项)。如果超过设置时长仍未收到确认信息,则会关闭 TCP 连接。单位为秒,默认值为30。当设置为0时,则采用默认值。该功能仅在 Linux 系统下生效。

ddb.session.setTimeout()是在数据传输的场景下,基本上是以下两种场景:(1)网络带宽很满,但是本次传输的数据比较大(2)单次大数据量传输。主要是数据传输过程一直传不完,导致ack无法及时返回,然后系统会在默认时间关闭这个tcp连接【也就是会话】

正常情况下,s.session(),建立会话后,这个会话会一直存在。

请先 登录 后评论

其它 0 个回答