Tag Archives: gunicorn

Python Flask production server options Gunicorn vs Waitress

Here is a common error I get with Flash Waitress web server I am currently testing: (should I go with Gunicon?)

ERROR:waitress:Socket error
Traceback (most recent call last):
File “/usr/local/lib/python3.6/site-packages/waitress/channel.py”, line 118, in handle_write
flush()
File “/usr/local/lib/python3.6/site-packages/waitress/channel.py”, line 207, in _flush_some_if_lockable
self._flush_some()
File “/usr/local/lib/python3.6/site-packages/waitress/channel.py”, line 227, in _flush_some
num_sent = self.send(chunk)
File “/usr/local/lib/python3.6/site-packages/waitress/wasyncore.py”, line 433, in send
result = self.socket.send(data)
TimeoutError: [Errno 110] Connection timed out

I tried to be compliant with LiteSpeed which my hosting provider will support. There are a few ways to do this with:

https://www.litespeedtech.com/docs/lsapi/python

This commerical Litespeed link should confirm this OpenLiteSpeed should work

https://www.litespeedtech.com/support/forum/threads/i-am-not-able-to-run-python.18528/

This option with LIteSpeed was not possible. I did however, get uswgi server working from this example on my web hosting provider:

https://riptutorial.com/flask/example/16286/using-uwsgi-to-run-a-flask-application

Here are some links to consider

Host it on Heroku? https://www.heroku.com/pricing
Good general overview:
https://vsupalov.com/flask-web-server-in-production/

I am using Waitress but it seems to time out quite a bit. This above article recommend \s Gunicorn.

https://www.toptal.com/flask/flask-production-recipes

Second article to recommend both Gunicorn but use Nginx instead?

How configure Nginx for Flask
https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uswgi-and-nginx-on-ubuntu-18-04
Another Gunicorn with Nginx
https://medium.com/faun/deploy-flask-app-with-nginx-using-gunicorn-7fda4f50066a

A warning about databases for Gunicorn
https://github.com/etianen/django-herokuapp/issues/9

Comparison across other Python web servers
https://www.appdynamics.com/blog/engineering/a-performance-analysis-of-python-wsgi-servers-part-2/

https://www.reddit.com/r/Python/comments/76g3vf/which_wsgi_servers_are_safe_to_expose_to_the/
This says Waitress is safe
https://docs.pylonsproject.org/projects/waitress/en/latest/design.html

Pros for Waitress over Gunicorn
https://www.reddit.com/r/Python/comments/qupyf/waitress_productionquality_purepython_wsgi_server/

Gunicorn vs Waitress https://stackshare.io/stackups/gunicorn-vs-waitress

Overall list of Python production ready servers

https://towardsdatascience.com/my-favorite-python-servers-to-deploy-into-production-d92289764fbe

Here is an overall overview with example scripts included:

http://fgimian.github.io/blog/2012/12/08/setting-up-a-rock-solid-python-development-web-server/

Gunicon is top and Waitress is second. Let me give Gunicorn a shot in a way to eliminate these socket errors.

This appears to be a simple way to setup Gunicon with Nginx

View at Medium.com

For CentOS, I had to install Development Tools

Install Build-Essentials for CentOS, RHEL and Ubuntu

NOTE I now post my TRADING ALERTS into my personal FACEBOOK ACCOUNT and TWITTER. Don't worry as I don't post stupid cat videos or what I eat!