unleash-client-python
unleash-client-python copied to clipboard
Client not getting updated toggles in flask app when running via gunicorn with "--preload" option
Describe the bug
When running unleash with flask/gunicorn, it is not getting updated with latest toggles from unleash server when it is run with option "--preload". More info on preload
gunicorn --chdir app app:app -w 2 --threads 2 -b 0.0.0.0:80 --preload
To Reproduce
I have a branch to demonstrate. using this demo toggle https://app.unleash-hosted.com/demo/projects/default/features/gunicorn
- From this Repo https://github.com/raymzag/Flask_Docker_App
-
docker-compose up --build
- Go to
http://localhost/test_unleash
- Try toggling on/off, give it some time 10-15s. It will not be updated.
- Remove the
--preload
option from https://github.com/raymzag/Flask_Docker_App/blob/master/gunicorn.sh - Do
docker-compose up --build
again. - Try toggling on/off, give it some time 10-15s. it will be updated.
Expected behavior Expects the unleash toggles to be refreshed in flask/gunicorn app with --preload option.
Logs If applicable, add logs or output to help explain your problem.
Additional context Add any other context about the problem here.
Thanks for raising this, lots of nice details in this report!
I believe I know what's happening here but give me a bit of time to double check myself
Just updating for folks who arrive here because this ended up on Slack. This is a currently limitation in the Python client that this won't work due to the way gunicorn spawns the underlying processes, right now it's best to not use the --preload
option. This is on our backlog and I'll update this when we have something that works
Hi there! I wanted to check if this is on the radar or being looked at? One of our backend services is hosted on GCP Cloud Run and instance load times are important here where we need to have preload
set to True. We love Unleash across our other services, but this is really blocking at the moment for us.