Я пишу API, чтобы принять запрос POST
и предоставить вывод.Вариант использования: я должен быть в состоянии поддерживать как отдельные, так и входные данные.Итак, я придумал такую структуру:
Ввод:
{
"inputs": [{
"id": 1,
"foo": "bar"
},
{
"id": 2,
"foo": "baz"
}
]
}
Вывод:
{
"outputs": [{
"id": 1,
"result": "bax"
},
{
"id": 2,
"result": "bar"
}
]
}
Этот формат поддерживает как одиночные, так и множественные вызовы.Однако это означает, что API должен будет обрабатывать процессор и потоки, например, вызов API может содержать 100 входных данных, и обработка может занять некоторое время.Итак, мне нужны входные данные по следующим пунктам:
- Если ответственность API заключается только в обработке ввода, то должна ли обработка ЦП / потока выполняться на уровне потребителя и использовать несколько вызовов для обработки нескольких входов?(т. е. один вход на вызов)
- Если я переключусь на один вход на вызов, я могу в конечном итоге сделать несколько вызовов (возможно, с другой конечной точкой), будет ли это эффективно (с точки зрения сетевого трафика) против одногоназывать за скажем 100 входов?(т.е. установление жесткого лимита на запрос)
- Является ли гибридный подход хорошей идеей?то есть, чтобы обработать пакет из 1000 входов, я могу разделить его на небольшие пакеты из 100 входов и сделать 10 вызовов
- API будет написан на Python / R, и я не очень разбираюсь в том, как эти языки обрабатываютнесколько потоков.
Если этот вопрос больше подходит для Stack Exchange, я рад, что он будет перенесен.