mangum
aiosql
Our great sponsors
mangum | aiosql | |
---|---|---|
17 | 10 | |
1,594 | 1,243 | |
- | - | |
2.5 | 8.7 | |
3 months ago | about 2 months ago | |
Python | Python | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
mangum
- Why the Serverless Revolution Has Stalled
-
Is there any batteries-included framework designed specifically for serverless functions?(preferably Python)
Hey! I was in the same place as you are, and the best solution I found was to use Mangum (https://mangum.io/). I believe it also works with Django. Mangum is an adapter that transforms lambda events into the corresponding structure to be received by your Framework API endpoints. We are currently using it with FastAPI and it's great. We code our backend without thinking about whether it will run on Lambda, and Magum takes care of the rest.
-
Is it really advisable to try to run fastapi with predominantly sync routes in a real world application?
In the real world I'm never using static cloud resources. It's all serverless, containers, or horizontal auto-scaling. I let the infrastructure handle asynchronous scaling when needed. For FastAPI specifically I've used Mangum: https://mangum.io/ to provide the asynchronous invocation below the ASGI layer. Then all my FastAPI code can just be synchronous.
-
Options to host a ReactJS + FastAPI + SQLlite application?
I discovered https://github.com/jordaneremieff/mangum which basically transforms a fastapi app to be compatible with aws lambda.
-
Serverless Rest API : api gateway + lambda with RDS database
Should I create only 1 apigtw resource with 1 lambda and use mangum + fastapi for my rest api ?
-
Yet another implementation for Slack Commands
Mangum: For the integration of the Aws Lambda and the Api Gateway with the FastApi
-
AWS with a Django app
If you go the lambda route, you can use DRF (or any ASGI app) using https://mangum.io/
-
Running Containers on AWS Lambda
Yes, it's possible to wrap any asgi app to run in a lambda. Check out Mangum https://github.com/jordaneremieff/mangum
-
Observability Best Practices when running FastAPI in a Lambda
But we do not have a handler function, do we? We have a Mangum object wrapping the FastAPI application. Luckily, the Mangum object acts as a handler function, so we can just add the following in example/src/app/__init__.py:
-
Django Rest API with AWS lambda or any other server less
I've used fastapi in a lambda. The package Mangum simplifies the conversion of lambda handler to a more tradition request.
aiosql
-
Don't use your ORM entities for everything – embrace the SQL
> resort to raw SQL
I'm the opposite, I would rather write SQL than "resorting to" ORM queries, which is why my favourite libraries are aiosql[1] in Python, Hugsql[2] in Clojure and similar: write the queries as SQL in .sql files, which then get exposed as functions to your code.
[1] https://nackjicholson.github.io/aiosql/
[2] https://www.hugsql.org/
-
Project template without ORM
I prefer to use aiosql https://nackjicholson.github.io/aiosql/ to organize my SQL and have it in a SQL folder. It looks like this where colons specify variables:
-
If you could choose any Python web framework to build APIs for a startup, which one would you choose and why?
I tend to do a lot of data-heavy projects, so I tend to eschew ORM-style code and use a project called aiosql to bind raw SQL to python methods, and offload as much expensive computation to the DB as possible. If I'm prototyping an endpoint (e.g. calculating percentiles for some midsized time-series data), and just need a non-performant working placeholder, it's extremely easy to dump a SQL table to pandas and yeet something together in a few lines - then smoothly replace it with a more performant SQL query down the road. Highly contextual move, but I find it to be an awesome balancing point between flexibility, scalability, performance, productivity, etc.
-
Which not so well known Python packages do you like to use on a regular basis and why?
As one of the rare Python developers who actually like SQL, my favourite database library is aiosql
-
Database as Code. Not only migrations
Only slightly off-topic, poking around in there led me to aiosql, which takes an idea I'd had and jumps forward a good long way. :-)
-
The Data-Oriented Design Process for Game Development
I've been doing something in this vein for a big personal project, using this python library: https://nackjicholson.github.io/aiosql/.
In short, I'm using a run of the mill stack (Caddy/Gunicorn/Flask/Postgres) - but with the twist that all my core logic is defined in plaintext SQL files, which get bound into namespaced Python methods by aiosql. Routing, error handling, templating, etc. are all done in Python - but all data manipulation and processing are outsourced to the DB level. All database object definitions are laid out in a massive, idempotent "init_db" method that gets called at launch, so I can essentially point the app at a fresh instance of Postgres and rebuild from scratch. The design is primarily driven by my personal distaste for ORMs, but I've found it extremely beneficial in terms of rigid typing, integrity checks, and performance.
-
Is it bad practice for my flask API to run raw SQL queries against my DB to get/post data?
Definitely check out https://nackjicholson.github.io/aiosql/ if you want to stick with SQL
-
Django 4.0 release candidate 1 released
I took that approach on my latest Flask project and it’s gone quite swimmingly. The problem I ran into was that a lot of the ecosystem, and therefore documentation, blog posts, helper libraries, etc., are all written under the assumption that you’re using an ORM. It took a while to figure out how to work around that, but once I did, I was home clear.
I also used a helper library to automatically map namespaced .sql files onto python functions with various return types, which made the development process way more elegant: https://nackjicholson.github.io/aiosql/. Absolute game changer if you plan to go this route - can’t recommend it highly enough.
-
FastAPI framework, high perf, easy to learn, fast to code, ready for production
I've been using FastAPI for some time, and now I'm using it as a full web framework (not just for REST APIs). I like writing SQL without ORMs, so the combination of aiosql[0] + FastAPI + Jinja2 works great. Add HTMX[1] and even interactive websites become easy.
That's in fact the stack I am using to build https://drwn.io/ and I couldn't enjoy it more.
Thanks Sebastián for creating it!
[0] https://github.com/nackjicholson/aiosql
What are some alternatives?
Zappa - Serverless Python
databases - Async database support for Python. 🗄
docker-flask-example - A production ready example Flask app that's using Docker and Docker Compose.
full-stack-fastapi-template - Full stack, modern web application template. Using FastAPI, React, SQLModel, PostgreSQL, Docker, GitHub Actions, automatic HTTPS and more.
aws-simple-websocket - Using AWS's API Gateway + Lambda to run a simple websocket application. For learning/testing.
django-async-orm - Bringing Async Capabilities to django ORM
fastapi - FastAPI framework, high performance, easy to learn, fast to code, ready for production
fastapi-crudrouter - A dynamic FastAPI router that automatically creates CRUD routes for your models
Pebble - Java Template Engine
chalice - Python Serverless Microframework for AWS
openapi-generator - OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)