Skip to content
New issue

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

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

Already on GitHub? # 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.

@drcpu-github drcpu-github force-pushed the fix-pylibmc-gevent-race branch from 3b51f50 to 2322e34 Compare July 22, 2023 19:33
@drcpu-github drcpu-github force-pushed the fix-pylibmc-gevent-race branch from 8141bfb to 96103b1 Compare July 22, 2023 20:09
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

1 participant