如何在while true循环中接收ddb push来的数据?

我是通过tqsdk api发送数据到DDB的,经过DDB的计算 ,最终结果在result流表中,这个流表在DDB中已经share

python 端我用伪代码展示一下:

s = ddb.session()

s.connect("localhost", 8848, "admin", "123456")

def handle_ddbreturn(lst):

    print(lst)

s.enableStreaming(9000)   #我在cdg里设置了subport=9000 所以这里填9000

s.subscribe("192.168.3.7", 8848, handle_ddbreturn, "result")  #这里先订阅result表

while True:

    tqapi.api.wait_update()   # 监测我订阅的品种的变动情况,有变动则往下执行,无变动则停在此处

    if tqapi.is_changing(我订阅的品种):

        bar_tuple=处理步骤(我订阅的品种)

        s.upload({"bar_tuple": bar_tuple})  #上传最新一条BAR记录到DDB服务端

        s.run("tableInsert(ohlc,bar_tuple);")

    

    # 前面已经上传了记录,对应的DDB result表中就有了计算结果

    Event().wait()  #在此处想接收到最新的计算结果记录, 但报错


信息如下:

2022-02-09 10:02:42 -     INFO - 通知 : 与 wss://free-api.shinnytech.com/t/nfmd/front/mobile 的网络连接已建立

Traceback (most recent call last):

  File "C:/Users/Y/Documents/code/py38/ddb/tqsdk_call_ddb.py", line 33, in <module>

    s.subscribe("192.168.3.7", 8848, handle_ddbreturn, "result")

  File "C:\Users\Y\miniconda3\lib\site-packages\dolphindb\session.py", line 173, in subscribe

    self.cpp.subscribe(host, port, handler, tableName, actionName, offset, resub, filter)

RuntimeError: Failed to connect to server: 192.168.3.7 8848

The Winsock 2.2 dll was found okay

Failed to connect to host = 192.168.3.7 port = 8848 with error code 10060


XXXXXXXXXXX


Traceback (most recent call last):

  File "C:\Users\Y\miniconda3\lib\site-packages\websockets\legacy\protocol.py", line 1321, in close_connection

  File "C:\Users\Y\miniconda3\lib\site-packages\websockets\legacy\protocol.py", line 1339, in close_transport

  File "C:\Users\Y\miniconda3\lib\site-packages\websockets\legacy\protocol.py", line 1364, in wait_for_connection_lost

  File "C:\Users\Y\miniconda3\lib\asyncio\tasks.py", line 448, in wait_for

RuntimeError: no running event loop

Task was destroyed but it is pending!

task: <Task pending name='Task-30' coro=<TqDataFrame.async_update() running at C:\Users\Y\miniconda3\lib\site-packages\tqsdk\objs_not_entity.py:192> wait_for=<Future finished result=None> cb=[TqBaseApi._on_task_done()]>

Failed to accept one incoming connection with error code 10004

Streaming Daemon socket accept failed, aborting.

        

    

请先 登录 后评论

1 个回答

alex

报错提示 192.168.3.7 8848 连不上,是不是有防火墙规则?

请先 登录 后评论
  • 1 关注
  • 0 收藏,1042 浏览
  • ddbuserex 提出于 2022-02-09 10:06

相似问题