在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
相关产品推荐
相关产品推荐

