Reputation: 577
When running my app on the local server using gunicorn, I get the following error log:
[2019-06-10 20:12:20 +0200] [34160] [ERROR] Socket error processing request.
Traceback (most recent call last):
File "/Users/user/Documents/project/venv/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 135, in handle
self.handle_request(listener, req, client, addr)
File "/Users/user/Documents/project/venv/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 191, in handle_request
six.reraise(*sys.exc_info())
File "/Users/user/Documents/project/venv/lib/python3.6/site-packages/gunicorn/six.py", line 625, in reraise
raise value
File "/Users/user/Documents/project/venv/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 183, in handle_request
resp.close()
File "/Users/user/Documents/project/venv/lib/python3.6/site-packages/gunicorn/http/wsgi.py", line 409, in close
self.send_headers()
File "/Users/user/Documents/project/venv/lib/python3.6/site-packages/gunicorn/http/wsgi.py", line 329, in send_headers
util.write(self.sock, util.to_bytestring(header_str, "ascii"))
File "/Users/user/Documents/project/venv/lib/python3.6/site-packages/gunicorn/util.py", line 304, in write
sock.sendall(data)
OSError: [Errno 9] Bad file descriptor
My gunicorn configuration is the following, I executed it using gunicorn -w 4 -b 0.0.0.0:8080 uwsgi:app config=config.ini:
[server:main]
workers = 4
worker_class = 'eventlet'
bind = '0.0.0.0:8080'
reload = False
daemon = True
timeout = 1200
port = 8080
Code for web socket connection via Flask-SocketIO:
app = Flask(__name__)
Session(app)
socketio = SocketIO(app)
I am using Flask-SocketIO, for now I am just trying to get the socket framework working over the wsgi server without Nginx on my local machine. Any suggestions on what the problem may be? Cannot piece it together from these error logs - thanks in advance for any advice!
Upvotes: 5
Views: 4176
Reputation: 577
I had to specify the worker as eventlet, now it is working on the local machine with gunicorn. I did that by running:
gunicorn -w 1 -b 0.0.0.0:8080 app:app --worker-class eventlet --reload
Upvotes: 8