Easy serverless deploy of python web applications
Project description
Simple deploy of python web-apps @YandexCloud
Forget about setting up your own infrastructure, vps, network, orchestrators, etc... go serverless
- Quickstart
- Deployment examples
- Django
- Yandex Cloud authorization
- Limitations
- Articles
- Roadmap
- Troubleshooting
- Support and contribution
- Acknowledgements
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
Both WSGI and ASGI applications are supported (as well as raw functions). So Django, Flask, FastAPI... etc could be easily deployed.
Furthermore, not just regular json API could be deployed this way. Several types of applications could be launched with Yappa:
- raw serverless function
- raw serverless function + Postgres
- json API (Flask, FastAPI, Django rest framework)
- single page application
- SPA + multiple API versions
...
more examples will be added soon
Django
please see examples:
- Django Rest Framework basic - basic DRF app. To explore serverless and Yappa features, like management commands
- Django Rest Framework + Postgres -
- DRF app with managed Postgres connectivity
Management commands
django manage.py commands are supported. just run
$ yappa manage migrate
In order to support management commands, for Django projects second cloud function is being created every deploy. It's made only for handling management commands, and it's not public. Therefore, commands do not support user inputs: to every command '--no-input' flag is added.
Creating superuser
As of Django 3.0 env variables are supported for createsuperuser command. So you should deploy your app with DJANGO_SUPERUSER_USERNAME, DJANGO_SUPERUSER_PASSWORD environment variables. Then run
$ yappa manage createsuperuser
The other way around would be to implement custom management command (see StackOverflow topic)
Yandex Cloud authorization
Command '$ yappa setup' prompts you for OAuth token. Then, Yappa creates service account "yappa-uploader-service" with roles editor and serverless.functions.admin for the specified folder. Key for this account is created and saved locally at .yc file.
Command '$ yappa deploy' supports two types of authorization
- service account key saved at .yc file (generated during '$ yappa setup')
- environment variables YC_OAUTH and YC_FOLDER
Limitations
There are some limitations, however YandexCloud team is constantly releasing new features and services. Also, the team of this project will try to keep up. So stay tuned :)
Database connectivity
Managed Postgres and YandexDB is supported inside Yandex Cloud. In case any other DB - it has to have public IP address
For details on how te set up connection with managed postgres please refer to
Headers and authorization
Please note that some request headers (like Authorization) are deleted before function is invoked
Articles
Habr:
Development and Contribution
Please see project boards and issues. With any questions and suggestions please visit our telegram chat
In the near future we will be focused on documentation improvements (mainly deployment examples) and support of async tasks (serverless workers and scheduler for celery).
Troubleshooting
- installing grpcio on Apple M1: installing with anaconda may help. Also look at stackoverflow
- versions of python 3.7 support yappa up to 0.3.12. You should use python 3.8 and above for new versions of yappa.
Acknowledgements
- Mikhail Novikov for starting this project two years ago
- httpx as a great tool for calling WSGI/ASGI apps offline
- 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.
Source Distribution
Built Distribution
File details
Details for the file yappa-0.4.28.tar.gz
.
File metadata
- Download URL: yappa-0.4.28.tar.gz
- Upload date:
- Size: 21.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e7749ec9fc59d2e469e6f15ae2f632f1a9b563bcf1e346ef084b2ebf76566bb |
|
MD5 | 20bb447af9116ee3f2591c8fe062a3ce |
|
BLAKE2b-256 | 090fc25927239cd3470bd4639547ce25f06836e0672e9ecca1eee8387ebc0a0d |
File details
Details for the file yappa-0.4.28-py3-none-any.whl
.
File metadata
- Download URL: yappa-0.4.28-py3-none-any.whl
- Upload date:
- Size: 26.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4694b6e67c37ec6a640d24bffcfe19a33e5c330f8616ce2459097d42e5e757ae |
|
MD5 | be262bfd98453de1e1dcecbb506789c2 |
|
BLAKE2b-256 | 5cdf0ab1308fec3015d1421f45aac5e9f5bc737736d86ebcf4e7a8ac68841a11 |