You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Flask应用中集成truedata-ws WebSocket数据遇阻,求助解决方案

Flask集成truedata-ws WebSocket数据获取问题求助

我在Flask应用中尝试使用truedata-ws Python WebSocket库获取实时数据,但始终无法成功。先后试过Miguel Grinberg的WebSocket集成方案、多线程等多种方法,均未解决问题。以下是相关代码文件,恳请协助排查:

Main.py 文件

import sqlalchemy
from flask import Flask, url_for
from flask_bcrypt import Bcrypt
from flask_login import LoginManager
from flask_mail import Mail
from flask_restful import Api
from flask_sock import Sock
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import create_engine
from ryj_bhav.Config import Config
from truedata_ws.websocket.TD import TD
import logging

bcrypt = Bcrypt()
login_manager = LoginManager()
login_manager.login_view = 'users.login'
login_manager.login_message_category = 'info'
db = SQLAlchemy()
mail = Mail()
api = Api()
sock = Sock()

Gold_Onn = 55000
Silver_Onn = 65000


@sock.route('/echo')
def echo():
    while True:
        username = 'test'
        password = 'test'
        realtime_port = 8084
        url = 'push.truedata.in'

        symbols = ["SYMBOL-I", "SYMBOL-II"]
        td_obj = TD(username, password, live_port=realtime_port, url=url, log_level=logging.DEBUG,
                    log_format="%(message)s")

        @td_obj.trade_callback
        def strategy_callback(symbol_id, tick_data):
            print(f'Trade  update > {tick_data}')


def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(Config)
    bcrypt.init_app(app)
    login_manager.init_app(app)
    db.init_app(app)
    mail.init_app(app)
    sock.init_app(app)

    from ryj_bhav.routes import routes
    from ryj_bhav.routes import LiveRateAPI

    api.add_resource(LiveRateAPI, '/live-bhav')
    api.init_app(app)
    app.register_blueprint(routes)

    return app

true-data-ws.py(WebSocket连接文件)

from truedata_ws.websocket.TD import TD
import time
import logging
from datetime import date

username = 'test'
password = 'test'

realtime_port = 8084

url = 'push.truedata.in'

symbols = ["SYMBOL-I", "SYMBOL-II"]
print('About To Start')

td_obj = TD(username, password, live_port=realtime_port, url=url, log_level=logging.DEBUG, log_format="%(message)s")
# td_obj = TD(username, password, live_port=realtime_port, url=url, historical_api=False)

print('\n')
print('Starting Real Time Feed....')

req_ids = td_obj.start_live_data(symbols)

live_data_objs = {}

time.sleep(2)

for req_id in req_ids:
    print('my req ids', req_id)
    print(f'touchlinedata -> {td_obj.touchline_data[req_id]}')


@td_obj.trade_callback
def strategy_callback(symbol_id, tick_data):
    print('My Symbol id',tick_data.get('ltp'))
    # print(f'Trade  update > {tick_data}')


# @td_obj.bidask_callback
# def new_bidask(symbol_id, tick_data):
#     print(f"BidAsk update > {tick_data}")


while True:
    time.sleep(120)

run.py 文件

from ryj_bhav import create_app

app = create_app()

if __name__ == '__main__':
    app.run(debug=True)

内容的提问来源于stack exchange,提问作者Kunal Soni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:10:55