unleash-client-python icon indicating copy to clipboard operation
unleash-client-python copied to clipboard

Client not getting updated toggles in flask app when running via gunicorn with "--preload" option

Open raymzag opened this issue 2 years ago • 3 comments

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

  1. From this Repo https://github.com/raymzag/Flask_Docker_App
  2. docker-compose up --build
  3. Go to http://localhost/test_unleash
  4. Try toggling on/off, give it some time 10-15s. It will not be updated.
  5. Remove the --preload option from https://github.com/raymzag/Flask_Docker_App/blob/master/gunicorn.sh
  6. Do docker-compose up --build again.
  7. 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.

raymzag avatar Jul 22 '22 00:07 raymzag

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

sighphyre avatar Jul 22 '22 07:07 sighphyre

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

sighphyre avatar Nov 01 '22 13:11 sighphyre

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.

diepholz avatar Apr 26 '24 14:04 diepholz