У меня есть следующая проблема: В моем приложении Plotly Dash есть функция, запускаемая кнопкой, которая может занять до 30 секунд, пока ее выполнение не закончится.
Моя проблема в том, чтоФункция может быть запущена во второй раз нажатием кнопки, в то время как все еще выполняется в первый раз.
Например:
import dash
from dash.dependencies import Input, Output
import dash_html_components as html
import time
app = dash.Dash()
app.layout = html.Div([
html.H2('Imports'),
html.Button('Button', id='button'),
html.H3(id='button-clicks'),
])
@app.callback(
Output('button-clicks', 'children'),
[Input('button', 'n_clicks')]
)
def import_data(n_clicks):
if n_clicks:
for t in range(0, 10):
print(t)
time.sleep(1)
return 'Button has been clicked {} times'.format(n_clicks)
if __name__ == '__main__':
app.run_server(debug=True)
когда я нажимаю на мою кнопку, вывод будетпо желанию: 0 1 2 3 4
но когда я нажимаю кнопку дважды в течение, например, 2 секунд, вывод будет: 0 1 2 0 3 1 4 2 3 4, потому что он выполняет мойФункция import_data дважды параллельна.
Есть ли способ предотвратить параллельное выполнение (например, с помощью блокировки кнопки)?
THX & BR