* add py37 to travisci * use dist:xenial for py37 * sudo: true in .travici * bump websockets version for py37 support and fix unit tests
* add recycling feature to gunicorn worker * add unit tests * add more unit tests, and remove redundant trigger_events call * fixed up unit tests * make flake8 happy * address feedbacks * make flake8 happy * add doc