Запуск двух процессов на Flask с общими переменными - PullRequest
0 голосов
/ 17 октября 2018

Я хочу создать веб-приложение с 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?

1 Ответ

0 голосов
/ 18 октября 2018

Более простой способ - используйте колбу вместо колбы.https://flask -socketio.readthedocs.io / en / latest /

Пример отправки сообщений с использованием flask-socketio https://flask -socketio.readthedocs.io / en / latest/ # отправка-сообщения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...