Upload asynchronously to Amazon S3 using Tornado

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.
Continue reading

Deploy cherrymusic using Nginx, Supervisord and Virtualenv on Ubuntu

Cherrymusic is a music streaming server written in python.

We assume the deployment is done in /home/user/music.domain.com

Cherrymusic

1. Go to the deployment folder and clone the cherrymusic repo

cd /home/user/music.domain.com
git clone https://github.com/devsnd/cherrymusic

2. Create and enable the virtualenv

python3 -m venv music_env
source music_env/bin/activate

3. Test if the cherrymusic server starts and stop it afterwords

python cherrymusic --setup --port 8080
(ctrl+c)

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 `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.
eg: /var/music

Continue reading