0

私は Python とダッシュを学んでおり、取引を監視するためのアプリケーションを構築しています。

「Live Updating Components」の例 (軌道衛星) のコードを変更しました。jupyter ノートブックと repl.it ではうまく動作しますが、自分のコンピューターで試してみるとエラーが発生します。

「トレースバック (最新の呼び出しが最後): ファイル "orbital.py"、62 行目、Input('interval-component', 'n_intervals'))」

「入力引数 interval-component.n_intervals は、dash.dependencies.Inputs のリストまたはタプルでなければなりません。」</p>

理由がわかりません

これが私のコードです:

import ccxt
import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly
from dash.dependencies import Input, Output
import pandas as pd



app = dash.Dash(__name__)

ftx = ccxt.ftx({'verbose': True})
ftx = ccxt.ftx({
    'apiKey': '',
    'secret': '',

    
})


app.layout = html.Div(
    html.Div([
        html.H4('FTX Live Feed'),
        html.Div(id='live-update-text'),
        dcc.Interval(
            id='interval-component',
            interval=1*1000, # in milliseconds
            n_intervals=0
        )
    ])
)

class Client:
    """A sample client class"""

    def __init__(self):
        self.pnl = []

    @classmethod
    def get_balances(client):
        try:
            balance = ftx.fetch_balance()
        except ccxt.BaseError as e:
            print(f"Could not get account with error: {e}")
            raise e
        else:
            result = balance["info"]["result"]
            total = []
            for x in result:
                if float(x["free"]) > 0.0:
                    total.append(x["usdValue"])
                    a = list(map(float, total))

            df = pd.Series(a)
            # global totCap
            totCap = df.sum()
            return totCap

@app.callback(Output('live-update-text', 'children'),
              Input('interval-component', 'n_intervals'))


def update_metrics(n):

    arc = Client().get_balances()
    style = {'padding': '5px', 'fontSize': '16px'}
    return [
        html.Span('Balance: {0:.2f}'.format(arc), style=style)
    ]



if __name__ == '__main__':
    app.run_server(host="0.0.0.0", port="8050")

これはreplitアプリのスクリーンショットです: replit dash

4

1 に答える 1

0

エラーが言おうとしているInputように、次のようにリストでラップする必要があります。

@app.callback(Output('live-update-text', 'children'),
              [Input('interval-component', 'n_intervals')])
于 2021-04-04T15:14:20.967 に答える