Использование кэширования не помогает, поскольку функция может вызываться одновременно в разных запросах. Когда оба запроса увидят, что кеш пуст, оба перейдут к выполнению дорогостоящей функции.
Код: Выделить всё
def detect_primes(nums: List[int]) -> Dict[int, bool]:
""" detect whether a list of numbers are prime """
Код: Выделить всё
@app.route('/detect', methods=['GET'])
def search():
args = request.args
nums = list(map(int, args.get('nums', '').split(',')))
return detect_primes(nums)
Ответы: {"13": true, "14" : false, "15": false и {"15": false, "16": false
Я бы не хотел вызывать define_primes< /код> с [13, 14, 15] и [15, 16]. В идеале оба запроса должны ожидать вызова с [13, 14, 15, 16] (или двух вызовов [13, 14, 15] и [16]) и возвращать соответствующие результаты.
Выбор веб-фреймворка для меня не важен, вы можете предположить, что это flask или fastapi.
РЕДАКТИРОВАТЬ: не знаю, как вопрос является дубликатом или является ответили в разделе «Являются ли глобальные переменные потокобезопасными в Flask?» Как мне обмениваться данными между запросами? Как объяснялось выше, кеш нельзя использовать (будь то кеш Python в памяти, внешний кеш или база данных). Я рад, что мой ответ доказал мою неправоту.
Подробнее здесь: https://stackoverflow.com/questions/711 ... api-server
Мобильная версия