Easy serverless deploy of python web applications
Project description
Simple serverless deploy of python web-apps @YandexCloud
Forget about setting up your own infrastructure, vps, network, orchestrators, etc...
Quickstart
- setup virtual env, create your app
- create account at Yandex Cloud
- install Yappa
$ pip install yappa -U
$ pip freeze > requirements.txt
- use Yappa:
$ yappa setup
$ yappa deploy
...that's it! Your application is deployed
updates
when your code is updated just run
$ yappa deploy
Deployment examples
Not just regular json API could be deployed this way. Several types of applications could be deployed with Yappa:
- raw serverless function
- json API (Flask, Django rest framework)
- regular Django app
- single page application
- SPA + multiple API versions
...
see examples folder
Roadmap
!TODO
Support and contribution
Feel free to make pull request or ask anything at https://t.me/yappa_chat
Also looking for contributors %)
Limitations
Frameworks support
At this point WSGI applications and raw functions are supported, tested on Flask and Django. ASGI applications (FastAPI, Starlette) will be added in the future
Database connectivity
Only YandexDB is supported inside Yandex Cloud. So any database you use
has to have public IP address
Managed Postgress will be added soon, see updates
Headers and authorization
Please note that some request headers (like Authorization) are deleted before function is invoked
How does this work
! TODO
Yandex Cloud authorization
! TODO
Troubleshooting
- grpcio on Apple M1
There is a known issue with installing grpcio on M1 Macs, installing with anaconda may help. Also look at https://stackoverflow.com/questions/66640705/how-can-i-install-grpcio-on-an-apple-m1-silicon-laptop
Acknowledgements
Mikhail Novikov for starting this project two years ago httpx as a great tool for calling WSGI/ASGI apps Zappa for inspiration
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.