This is a asgi - starlette
demo project.
What's asgi? In short, the successor to wsgi!
It features:
starlette
asgi frameworkuvicorn
asgi servergunicorn
http serverpoetry
dependency managerdatabases
async db supportsqlalchemy
sql toolkitalembic
database migrationsblack
code formatterflake8
style checkermypy
static type checkerxenon
cyclomatic complexity checkerpytest
test framework
and:
- a
Dockerfile
for simple deployment - a
travis
config for continuous integration
Using poetry for project dependency management
# make sure poetry is installed
$ which poetry
/usr/local/bin/poetry
# how I setup poetry
$ poetry config settings.virtualenvs.create false
$ poetry config settings.virtualenvs.in-project true
$ poetry config --list
settings.virtualenvs.create = false
settings.virtualenvs.in-project = true
# create venv
$ python3.7 -m venv .venv
$ source venv/bin/activate
# install project dependencies
$ poetry install
# .env for development
$ ln -s .env.dev .env
$ balck app tests
All done! ✨ 🍰 ✨
18 files left unchanged.
$ black app tests --check # this one is for CI
$ isort -rc app tests
$ isort -rc app tests --check-only # this one is for CI
$ flake8 app tests
$ mypy app tests
$ radon cc app -n B -s
$ radon cc tests -n B -s
$ xenon app -b A # this one is for CI
$ xenon tests -b A # this one is for CI
$ pytest
# for ipdb compatibale test runs
$ pytest -s
# for detailed coverage report
$ coverage html
$ firefox htmlcov/index.html
$ alembic upgrade head
...
INFO [alembic.runtime.migration] Running upgrade -> 8a4192a2406a, create protocols table
INFO [alembic.runtime.migration] Running upgrade 8a4192a2406a -> 1a9952031305, update protocols table: is_cool col
...
$ alembic revision --autogenerate -m "update protocols table: add example col"
...
INFO [alembic.autogenerate.compare] Detected added column 'protocols.example'
...
# run asgi server with auto load
$ ./dev.sh