Сообщение об ошибке предотвращения циклических зависимостей в Plotly Dash - PullRequest
0 голосов
/ 25 сентября 2019

В моей программе Dash есть рекурсивные элементы, которые хорошо обрабатываются и никогда не подвергаются риску бесконечной рекурсии.К сожалению, в моем приложении появляется окно, сообщающее, что у меня есть рекурсия.Как мне остановить отображение этого предупреждения?

Возможно, излишнее количество деталей ниже, если это не просто легко решаемая проблема Python.Если в итоге получится простое решение, я удалю нижеприведенный раздел.


Дополнительная информация, если приведенного выше недостаточно для ответа на вопрос :

У меня есть функция, которая изменяет поле ввода с множественным выбором, так что выбор «Все» удалит все уже выбранные параметры и просто сделает «все» выбранными, или, если «Все» уже выбран, выбор параметра удалит все.Это достигается путем отслеживания состояния «Все» и соответствующей корректировки с помощью 2 обратных вызовов:

@app.callback([Output('varValue', 'value'),
               Output('varAll', 'value')],
              [Input('varChoice', 'value')],
              [State('varAll', 'value')]
              )
def set_borrower_value(varChoice, varAll):

#[code that figures out what the user wants, based on the above]

return theSetOfChoicesTheUserActuallyWants, IsAllNowSelected

@app.callback(Output('varChoice', 'value'),
              [Input('varValue', 'value')],
              [State('varChoice', 'value')]
              )
def Set_Choice_From_Value(varValue, varChoice):
    if(borrowerValue == borrowerChoice):
        raise PreventUpdate #stops recursion
    return borrowerValue

Таким образом, бесконечная рекурсия всегда обрабатывается просто отлично.


...