Как заблокировать конечную точку Flask, чтобы доступ к ней мог иметь только один пользователь одновременно? ⇐ Python
-
Гость
Как заблокировать конечную точку Flask, чтобы доступ к ней мог иметь только один пользователь одновременно?
У меня есть сервер flask с множеством конечных точек, например:
@app.route('/project1/bench1') защита стенд1_dashboard(): return send_from_directory('templates/project1/bench1.html') Дело в том, что я создаю пользовательский интерфейс, который позволяет контролировать определенные вещи на стенде 1 без необходимости использовать удаленное управление. (Другой сервер Flask работает на стенде 1 и выступает в качестве клиента.)
Моя цель — каким-то образом заставить Flask разрешить доступ к этой конечной точке одновременно только одному пользователю.
Дополнительная информация:
[*]связь находится в состоянии покоя API [*]маршрут связи всегда начинается с JavaScript HTML-сайта, проходит через сервер, достигает клиента, а все, что происходит в обратном направлении, является просто ответами.
На стороне клиента мне удалось заставить HTML-сайт отправлять уведомление о закрытии страницы веб-сайта скамьи. Это значит, что у меня есть способ узнать, отключился ли пользователь, использующий сайт в данный момент.
Я также сделал словарь на стороне сервера для блокировок:
замки = { "bench1": "разблокировано" }
и изменил конечную точку следующим образом:
@app.route('/project1/bench1') защита стенд1_dashboard(): if locks["bench1"] == "заблокировано": вернуть render_template('bench_in_use.html') еще: locks["bench1"] = "заблокировано" return send_from_directory('templates/project1/bench1.html') Если страница закрыта, другая конечная точка получает уведомление и меняет блокировку на разблокированную.
К сожалению, та часть, которая блокирует открытие сайта вторым пользователем, похоже, не работает.
Связано ли это с тем, как в flask работает многопоточность?
У меня есть сервер flask с множеством конечных точек, например:
@app.route('/project1/bench1') защита стенд1_dashboard(): return send_from_directory('templates/project1/bench1.html') Дело в том, что я создаю пользовательский интерфейс, который позволяет контролировать определенные вещи на стенде 1 без необходимости использовать удаленное управление. (Другой сервер Flask работает на стенде 1 и выступает в качестве клиента.)
Моя цель — каким-то образом заставить Flask разрешить доступ к этой конечной точке одновременно только одному пользователю.
Дополнительная информация:
[*]связь находится в состоянии покоя API [*]маршрут связи всегда начинается с JavaScript HTML-сайта, проходит через сервер, достигает клиента, а все, что происходит в обратном направлении, является просто ответами.
На стороне клиента мне удалось заставить HTML-сайт отправлять уведомление о закрытии страницы веб-сайта скамьи. Это значит, что у меня есть способ узнать, отключился ли пользователь, использующий сайт в данный момент.
Я также сделал словарь на стороне сервера для блокировок:
замки = { "bench1": "разблокировано" }
и изменил конечную точку следующим образом:
@app.route('/project1/bench1') защита стенд1_dashboard(): if locks["bench1"] == "заблокировано": вернуть render_template('bench_in_use.html') еще: locks["bench1"] = "заблокировано" return send_from_directory('templates/project1/bench1.html') Если страница закрыта, другая конечная точка получает уведомление и меняет блокировку на разблокированную.
К сожалению, та часть, которая блокирует открытие сайта вторым пользователем, похоже, не работает.
Связано ли это с тем, как в flask работает многопоточность?
Мобильная версия