если у вас асинхронный код, то есть вот эти 3 варианта (ради интереса прогуглил, эти попались первыми, есть и другие), почему фреймворк должен навязывать 1 из них, чем это обосновано?
Сложностью связывания в первую очередь. В итоге мы имеем marshmallow-sqlalchemy, marshmallow-pewee, marshmallow-flask и т.д. И это только адаптеры для сериалайзера. Далее на каждый чих - либа у которой пол-контрибьютора и вообще не ясно, жива она или нет. Если вам такое по кайфу - велком во фронтенд, там так делается вообще все :)