python 数据库订阅_用python API订阅流数据时收不到数据

我在DolphinDB中创建了一张流表,然后分别在本地节点中订阅和在python api订阅这张流表,本地节点中订阅能收到流数据,但python api订阅端收不到流数据,请问可能是什么原因?我已经把操作系统的防火墙关掉了。

流数据相关配置如下:

maxPubConnections=10

persistenceDir=d:databaseDolphinDBstreamData

subPort=8888

maxSubConnections=10

mode=single

流数据表与本地订阅代码如下:

def createCheckST(){

colnames = [`ts, `minID,`maxID,`err ]

coltypes = [TIMESTAMP, INT, INT, STRING]

st= streamTable(10000:0, colnames, coltypes)

enableTableShareAndPersistence(st,"mtopst", false, true, 1000,100,0);

st1= streamTable(10000:0, colnames, coltypes)

enableTableShareAndPersistence(st1,"ntopst", false, true, 1000,100,0);

}

createCheckST()

subscribeTable(,tableName="ntopst",actionName="node",handler=mtopst,offset=0)

t=table(now() as ts,1 as minid,1 as maxid,"error" as err)

ntopst.append!(t)

python代码如下:

from threading import Event

import dolphindb as ddb

def h(msg):

print(msg)

s=ddb.session()

s.enableStreaming(8888)

s.subscribe("127.0.0.1",8848,h,"ntopst",actionName="python",offset=0,resub=True)

Event().wait()

回答

DolphinDB中数据订阅是push模式,也就是说数据有变化时,发布方会推数据到订阅端。所以订阅端需要有端口在监听。这个端口号,节点中通过配置项subPort设置。在python api中通过s.enableStreaming(port)中的参数port设置。在同个主机上,这些订阅端的监听端口号不能相同。上述问题的原因就是两个订阅端都设了8888.修改其中一个即可解决问题。

可用netstat察看一下端口的状态,比如:

//windows上用

netstat -ano|findstr "8848"

//linux上用

netstat -anlp | grep 8848

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值