Как избежать дублирующей обработки на сервере API Python?Python

Программы на Python
Ответить
Anonymous
 Как избежать дублирующей обработки на сервере API Python?

Сообщение Anonymous »

Предположим, вызов функцииDetect_primes требует больших затрат, и мне бы хотелось избежать повторных вызовов ее с повторяющимися параметрами. Что делать?
Использование кэширования не помогает, поскольку функция может вызываться одновременно в разных запросах. Когда оба запроса увидят, что кеш пуст, оба перейдут к выполнению дорогостоящей функции.

Код: Выделить всё

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,14,15, другой пользователь запрашивает 15,16.
Ответы: {"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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»