Just follow the best practices, not the rules. If you cannot figure out which is the best practice, then just pick the one that is most suitable for your project even if is not the most common.
If you want to build a new API stop thinking how to do it. Already there are thousands of people out there that did the same think. Just pick the most reasonable solution for your needs. I am sure you are not innovating anything if you decide to do a CORBA API just because to be different and so 10 years behind the trend. Or to use Pearl because the CTO of the company liked this 25 years ago.
TornadoWeb is a great non-blocking web server written in Python and Boto3 is the Amazon Web Services (AWS) SDK for Python, which allows developers to write in a very easy manner software that makes use of Amazon services like S3. Unfortunately boto3 S3 wrapper is blocking and if you would just use it out of the box in a Tornado application it will block the main thread because it uses a synchronous HTTP client.
Cherrymusic is a music streaming server written in python.
We assume the deployment is done in /home/user/music.domain.com
1. Go to the deployment folder and clone the cherrymusic repo
git clone https://github.com/devsnd/cherrymusic
2. Create and enable the virtualenv
python3 -m venv music_env
3. Test if the cherrymusic server starts and stop it afterwords
python cherrymusic --setup --port 8080
4. If you executed this commands under another user than the one under which you want to run cherrymusic
(eg: you ran the commands as root but you want to run under the user
mkdir -p /home/user/.config/cherrymusic
cp ~/.config/cherrymusic/cherrymusic.conf /home/user/.config/cherrymusic/
5. Edit cherrymusic.conf from the
user‘s home and set the
basedir with the path where your music collection is stored.
I launched a new pet-projecct (for the moment). I called it iFlyTomorrow and is life here: http://iflytomorrow.com/
I still have many ideas of new features for it and a lot to improve.