JTR
JTR

Reputation: 21

Flask SocketIO auto-reload is not working (on code change/development)

Auto reloader (on code change) works fine using app.run/flask run --host=0.0.0.0 --port 8080.

However as soon as I add flask_socketio to the mix it stops working.

E.g. bringing in:

from flask_socketio import SocketIO, send, emit
socketio = SocketIO(app, path='/kpi/socket.io')
socketio.run(app, host='0.0.0.0', port=8080, debug=True, use_reloader=True, use_debugger=True)

requirements.txt

Flask==1.0.2
Flask-Bootstrap==3.3.7.1
Gunicorn==19.8.1
inotify==0.2.9
pymysql==0.7.2
flask-socketio==3.0.1
eventlet==0.23.0
socketIO-client==0.7.2

I do get "* Restarting with stat" in the logs, same as I would if I was typically running flask.

Extraneous info: this is running in a docker container where I have a compose file for dev where I run the dev mode, and have an env variable for FLASK_DEBUG=1. Using nginx to proxy the rest to port 80 then I server that up to another local port. This all works fine and dandy until I add socketio.

Upvotes: 1

Views: 2432

Answers (1)

JTR
JTR

Reputation: 21

Ending up doing this:

Running this in dev (this brings in the werkzeug debugger for wsgi)

# TODO run this only in dev
from werkzeug.debug import DebuggedApplication
app.debug = True
app.wsgi_app = DebuggedApplication(app.wsgi_app, evalex=True)

Then use supervisord and run uwsgi instead including the flag

--py-autoreload 1

Those both return the functionality I want in development. Just need to make them only run in dev mode now and I'm good.

Upvotes: 1

Related Questions