Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

use ClientPool to prevent race conditions when using pylibmc as memcached package #287

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

drcpu-github
Copy link

This patch aims to fix concurrency issues when using the gthread worker class in gunicorn in combination with the pylibmc Memcached backend by utilizing a ClientPool rather than a single Client. This issue was also (partially) detailed in pallets-eco/flask-caching#113.

The proposed solution should work for every gunicorn worker configuration, so this patch always uses a ClientPool in an attempt to not further complicate the code with unnecessary branching statements. If you prefer it otherwise, I can still change that using a configuration switch.

Note that this patch also requires some changes to the flask-caching repository, but I first want to iterate on it here before opening another PR in that repository.

Checklist:

  • Add tests that demonstrate the correct behavior of the change. Tests should fail without the change.
  • Add or update relevant docs, in the docs folder and in code.
  • Add an entry in CHANGES.rst summarizing the change and linking to the issue.
  • Add .. versionchanged:: entries in any relevant code docs.
  • Run pre-commit hooks and fix any issues.
  • Run pytest and tox, no tests failed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

1 participant