This PR switches the project over to Quart, a very Flask like asyncio-powered microframework for web apps. It's apparently slightly slower than our old Tornado setup. However, the difference is negligible for our purposes, and the old Tornado was also getting dated. The main advantage here is that we are now compatible with Python's standard asyncio, and could utilize any asyncio compatible libraries if we wanted to.
I've restructured the code into a (yet not quite perfect yet) Python package, and implemented the typical Flask patterns (app factory with blueprint) that'd also allow for better unit-testing of the code in the future (which might even get better with dependency injection, but I'm not sure how easy that is with Quart).
The project also now uses poetry. While this does indeed bloat our Docker image a bit, it makes handling dependencies a lot easier during development and in production. Maybe someone can find out why I can't just pip install the project inside Docker, though.
This PR switches the project over to Quart, a very Flask like asyncio-powered microframework for web apps. It's apparently slightly slower than our old Tornado setup. However, the difference is negligible for our purposes, and the old Tornado was also getting dated. The main advantage here is that we are now compatible with Python's standard asyncio, and could utilize any asyncio compatible libraries if we wanted to.
I've restructured the code into a (yet not quite perfect yet) Python package, and implemented the typical Flask patterns (app factory with blueprint) that'd also allow for better unit-testing of the code in the future (which might even get better with dependency injection, but I'm not sure how easy that is with Quart).
The project also now uses poetry. While this does indeed bloat our Docker image a bit, it makes handling dependencies a lot easier during development and in production. Maybe someone can find out why I can't just
pip install
the project inside Docker, though.