Size: a a a

2020 February 23

RB

Roman Bolkhovitin in rannts
а кто это
REST можно на fastapi делать
А пробовал его? По документации он прям восхитительный
источник

а

а кто это in rannts
Roman Bolkhovitin
А пробовал его? По документации он прям восхитительный
чуть-чуть
источник

💭П

💭 Руслан Прохоров in rannts
а кто это
REST можно на fastapi делать
ага только к нему еще Единорога надо )
источник

💭П

💭 Руслан Прохоров in rannts
А если верить документации то он еще и свагер вытаскивает
источник

💭П

💭 Руслан Прохоров in rannts
и для реддока тоже )
источник

💭П

💭 Руслан Прохоров in rannts
И какой это легковесный получаеться?
источник

а

а кто это in rannts
💭 Руслан Прохоров
А если верить документации то он еще и свагер вытаскивает
он генерит swagger-like доку
источник

а

а кто это in rannts
ему нужен только старлет и пидантик
источник

а

а кто это in rannts
ну и ASGI сервер
источник

SZ

Sergey Z in rannts
Про зависимости крутое есть.
Коллега притащил в проект google-auth.
Зачем-то в зависимостях у него есть setuptools >=40.5.0
Причём внутри самого пакета setuptools ни разу не импортируется и никак не используется.
Было решено обновлять все зависимости.
Теперь сломано примерно всё
источник

💭П

💭 Руслан Прохоров in rannts
а кто это
он генерит swagger-like доку
Каюсь...Был не прав

CherryPY:
bash -c "du -sb test"
56599438        test


fastapi + uvicorn:
bash -c "du -sb test"
34505931        test


Base:
bash -c "du -sb test"
31706527        test
источник

💭П

💭 Руслан Прохоров in rannts
fastapi + uvicorn легче (((
источник

💭П

💭 Руслан Прохоров in rannts
Sergey Z
Про зависимости крутое есть.
Коллега притащил в проект google-auth.
Зачем-то в зависимостях у него есть setuptools >=40.5.0
Причём внутри самого пакета setuptools ни разу не импортируется и никак не используется.
Было решено обновлять все зависимости.
Теперь сломано примерно всё
Забавно:-(
источник

БС

Байт Словович in rannts
по факту fastapi нифига не легче, в смысле написания и отладки, особенно кто привык к фласку и иже с ним.
Например, если вы захотите нормально логировать запросы (со всеми параметрами query string / body /form), то придется сильно заморочиться.
Фактически fastapi  асинхронный, но иногда выглядит как синхронный, что может больно ударить.
Другая боль, "искоробки" он ловит только определенный эксепшен, а я привык к иерархии  аля:
class ApiError():
  xxxx

class NotFound(ApiError):
  status = 404
  message = "xxx"

class NotFoundFile(ApiError):
  ...
  def __init__(filename):
   yyy


И для того чтобы сделать как я люблю, мне приходится писать мидлварю, причем в fastapi их два типа. Так вот надо писать самую суровую, в которой асинхронные recv / send.
Плюс фастапи рекламируется как супер быстрый. Так вот, это гребанная ложь. Бенчмарк которым аффтор хвастается, специально написан "низкоуровнего" под бенчмарк и не использует свои возможности. По сути в бенчмарке используется голый uvicorn с тончайшей оберткой starlette.
источник

БС

Байт Словович in rannts
Но вот swagger "искоробки" это прикольно.
источник

RB

Roman Bolkhovitin in rannts
Байт Словович
по факту fastapi нифига не легче, в смысле написания и отладки, особенно кто привык к фласку и иже с ним.
Например, если вы захотите нормально логировать запросы (со всеми параметрами query string / body /form), то придется сильно заморочиться.
Фактически fastapi  асинхронный, но иногда выглядит как синхронный, что может больно ударить.
Другая боль, "искоробки" он ловит только определенный эксепшен, а я привык к иерархии  аля:
class ApiError():
  xxxx

class NotFound(ApiError):
  status = 404
  message = "xxx"

class NotFoundFile(ApiError):
  ...
  def __init__(filename):
   yyy


И для того чтобы сделать как я люблю, мне приходится писать мидлварю, причем в fastapi их два типа. Так вот надо писать самую суровую, в которой асинхронные recv / send.
Плюс фастапи рекламируется как супер быстрый. Так вот, это гребанная ложь. Бенчмарк которым аффтор хвастается, специально написан "низкоуровнего" под бенчмарк и не использует свои возможности. По сути в бенчмарке используется голый uvicorn с тончайшей оберткой starlette.
А чем тебе такой вариант не угодил?

https://fastapi.tiangolo.com/tutorial/handling-errors/#install-custom-exception-handlers
источник

БС

Байт Словович in rannts
Потому что там в коде проверка в коде именно на конкретный эксепшен. На потомки он уже не сработает.
Там внутри сохраняется тип эксепшена и хендлера в словарь.
И когда райзится эксепшен делает проверка аля:
  if exc in exceptions:
     ...
источник

БС

Байт Словович in rannts
Основной сценарий использования эксепшенов, который в доках прописан это такой:
if что то плохое:
  raise HttpException(status_code=404, details="file not found")

То есть ты в каждом месте где генеришь эксепшен должен передать и код и сообщение и это всё разбросано по тысячам местам бизнеслогики.
А например когда ты пишешь клиента к своему вебсерверу, хочется заранее знать все возможные эксепшены котоыре бэк может кинуть и их структуру (ведь во многих ошибках возвращается еще какие то детали: какой параметр не верный, какой файл не найден, запрос сделан из не поддерживаемой страны (вернется и текущая страна клиента и список разрешенных стран) и т.д.)
источник

а

а кто это in rannts
Байт Словович
Основной сценарий использования эксепшенов, который в доках прописан это такой:
if что то плохое:
  raise HttpException(status_code=404, details="file not found")

То есть ты в каждом месте где генеришь эксепшен должен передать и код и сообщение и это всё разбросано по тысячам местам бизнеслогики.
А например когда ты пишешь клиента к своему вебсерверу, хочется заранее знать все возможные эксепшены котоыре бэк может кинуть и их структуру (ведь во многих ошибках возвращается еще какие то детали: какой параметр не верный, какой файл не найден, запрос сделан из не поддерживаемой страны (вернется и текущая страна клиента и список разрешенных стран) и т.д.)
там можно указать, какие экспешены возвращает хендлер
источник

БС

Байт Словович in rannts
мне все 200 штук указывать?
источник