Javascript 使用dash更新实时烛台图表时遇到问题

Javascript 使用dash更新实时烛台图表时遇到问题,javascript,python,flask,plotly,plotly-dash,Javascript,Python,Flask,Plotly,Plotly Dash,我点击了一个用于加密金融数据实时更新的api,我希望我的图形在每次从该api获得新的拉入(30秒)时更新 这是嵌入在函数“tick”中的,该函数在碰到api时会发出滴答声。我在尝试修复此问题时遇到了一系列问题,但目前它将设置图形,在数据帧中绘制1个烛台图,然后不会运行其余的python代码,并允许再次“勾选”。我相信这是因为它是一个无限循环中的机器人,所以我无法设置dash服务器 def main(argv): app = dash.Dash(__name__) app.layout = h

我点击了一个用于加密金融数据实时更新的api,我希望我的图形在每次从该api获得新的拉入(30秒)时更新

这是嵌入在函数“tick”中的,该函数在碰到api时会发出滴答声。我在尝试修复此问题时遇到了一系列问题,但目前它将设置图形,在数据帧中绘制1个烛台图,然后不会运行其余的python代码,并允许再次“勾选”。我相信这是因为它是一个无限循环中的机器人,所以我无法设置dash服务器

def main(argv):

app = dash.Dash(__name__)

app.layout = html.Div(
    html.Div(className='container-fluid', children=
    [
        html.Div(className='row',
                 children=html.Div(dcc.Graph(id='live-graph', animate=True), className='col s12 m12 l12')),
        dcc.Interval(
            id='graph-update',
            interval=30000
        )
    ]),
)
app.run_server(debug=True)

chart = BotChart("poloniex", "USDT_BTC", 10, False)

strategy = BotStrategy()

candlesticks = []
developingCandlestick = BotCandlestick()


while True:
    try:
        developingCandlestick.tick(chart.getCurrentPrice())
    except urllib.error.URLError:
        time.sleep(int(30))
        developingCandlestick.tick(chart.getCurrentPrice())

    if (developingCandlestick.isClosed()):
        candlesticks.append(developingCandlestick)
        strategy.tick(developingCandlestick)
        developingCandlestick = BotCandlestick()

        Lclose, Lhigh, Llow, LOpen, Ldates = developingCandlestick.returnLists()
        print(Lclose)

        stock_df = pd.DataFrame({'Date': Ldates,
                                 'Open': LOpen,
                                 'High': Lhigh,
                                 'Low': Llow,
                                 'Close': Lclose,
                                 })




        @app.callback(
            Output('live-graph', 'figure'),
            events=[Event('graph-update', 'interval')]
        )
        def graph_update():

            data = {
                'data': [{'close': stock_df.Close,
                          'decreasing': {'line': {'color': '#808080'}},
                          'high': stock_df.High,
                          'increasing': {'line': {'color': '#17BECF'}},
                          'low': stock_df.Low,
                          'name': 'Trace 1',
                          'open': stock_df.Open,
                          'showlegend': True,
                          'type': 'candlestick',
                          'uid': '59f45c30-fa3a-459e-bc6d-f4643f4ed55e',
                          'x': stock_df.Date,
                          'yaxis': 'y2'}],
                'layout': {'legend': {'bgcolor': '#F5F6F9', 'font': {'color': '#4D5663'}},
                           'margin': {'b': 30, 'l': 30, 'r': 30, 't': 30},
                           'paper_bgcolor': '#F5F6F9',
                           'plot_bgcolor': '#F5F6F9',
                           'showlegend': True,
                           'titlefont': {'color': '#4D5663'},
                           'xaxis': {'anchor': 'y2',
                                     'gridcolor': '#E1E5ED',
                                     'rangeselector': {'bgcolor': 'rgba(150, 200, 250, 1)',
                                                       'buttons': [{'count': 1,
                                                                    'label': '1m',
                                                                    'step': 'month',
                                                                    'stepmode': 'backward'},
                                                                   {'count': 1,
                                                                    'label': '1y',
                                                                    'step': 'year',
                                                                    'stepmode': 'backward'}],
                                                       'font': {'size': 13},
                                                       'visible': False,
                                                       'x': 0,
                                                       'y': 0.9},
                                     'rangeslider': {'visible': False},
                                     'showgrid': True,
                                     'tickfont': {'color': '#4D5663'},
                                     'title': '',
                                     'titlefont': {'color': '#4D5663'},
                                     'zerolinecolor': '#E1E5ED'},
                           'yaxis': {'gridcolor': '#E1E5ED',
                                     'showgrid': True,
                                     'showticklabels': False,
                                     'tickfont': {'color': '#4D5663'},
                                     'title': '',
                                     'titlefont': {'color': '#4D5663'},
                                     'zerolinecolor': '#E1E5ED'}}
            }

            return data


    app.run_server(Debug=True)
    time.sleep(int(30))

if __name__ == "__main__":
    main(sys.argv[1:])
我想有服务器安装和更新每30秒,这是预期的结果。目前,它将设置服务器,由于api和其余数据发生在服务器设置之后,因此它不会运行其余代码。非常感谢您的帮助,如果您认为有更好的选择来绘制实时财务数据,我洗耳恭听。提前谢谢你