Я хочу создать веб-приложение с Flask, где некоторые данные печатаются на динамической странице в режиме реального времени.
Данные берутся из скрипта Python, который подключается к веб-сокету, а затем печатаются на интерфейсе с Flask.
У меня две проблемы: 1) Я не могу запустить оба скрипта2) Я не знаю, как позвонить parsed
с test
на yield
Вот код:
from time import sleep
from flask import Flask, render_template
import websocket
from bitmex_websocket import Instrument
from bitmex_websocket.constants import InstrumentChannels
from bitmex_websocket.constants import Channels
import json
from threading import Thread, Event
app = Flask(__name__)
websocket.enableTrace(True)
channels = [
InstrumentChannels.trade,
]
XBTUSD = Instrument(symbol='XBTUSD',
channels=channels)
XBTUSD.on('action', lambda msg: test(msg))
def test(msg):
parsed = json.loads(json.dumps(msg))
print(parsed)
@app.route('/')
def index():
# render the template (below) that will use JavaScript to read the stream
return render_template('index.html')
@app.route('/stream_sqrt')
def stream():
def generate():
yield '{}\n'.format('test')
return app.response_class(generate(), mimetype='text/plain')
if __name__ == '__main__':
XBTUSD.run_forever()
app.run()
Если я поставлю XBTUSD.run_forever()
перед app.run()
Я начну часть, которая должна получить данные, но приложение Flask не запустится.Если я сделаю обратное, приложение Flask запустится, но не другая часть.Как я могу запустить вместе все приложение?Как я могу «разделить» переменные между test
и generate
?