Я использую сервер python Flask для выполнения сложных алгоритмов, один из которых назначает кабели для труб.
class Tube:
max_capacity = 5
cables: List[str]
def has_capacity(self):
return len(self.cables) < self.max_capacity
Максимальная емкость всегда была 5, но теперь появился новый клиент на самом деле у него есть трубки, которые могут вмещать 6 кабелей.
Когда я получаю запрос, я просто устанавливаю Tube.max_capacity = request.args.get('max_capacity', 5)
. Тогда каждый экземпляр Tube будет иметь правильную настройку.
Мне было интересно, будет ли это работать, если одновременно обрабатывается несколько запросов?
Является ли Flask (я использую Gunicorn как WSGI) все процессы отделены друг от друга, так что это безопасно делать? Я не хочу заканчиваться странными ошибками, потому что максимальная емкость изменилась на полпути через запрос, потому что поступил другой запрос.
РЕДАКТИРОВАТЬ: Я попробовал это, и, кажется, работает как задумано:
@app.route('/concurrency')
def concurrency():
my_value = randint(0, 100)
Concurrency.value = my_value
time.sleep(8)
return f"My value: {my_value} should be equal to Concurrency.value {Concurrency.value}"
class Concurrency:
value = 10
Тем не менее, я хочу знать больше о том, как несколько запросов Flask / Gunicorn работают, чтобы быть уверенными.