Hello. I have been using Django 1.5.2 + uWSGI + Gevent with no problems for quite some time. I monkey patch my application as soon as I can and the greenlets cooperate with no problems since all the work is network-bound.
I have recently tried to switch to Django 1.6.1, but I found that my greenlets started blocking rather frequently. I produced a stacktrace of all the greenlets of a uWSGI worker and realised most of them were blocked around the same lock: 1513 were blocked on: File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/gevent/greenlet.py", line 327, in run result = self._run(*self.args, **self.kwargs) File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 206, in __call__ response = self.get_response(request) File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 90, in get_response response = middleware_method(request) File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/django/contrib/sessions/middleware.py", line 12, in process_request request.session = engine.SessionStore(session_key) File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py", line 14, in __init__ self._cache = get_cache(settings.SESSION_CACHE_ALIAS) File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/django/core/cache/__init__.py", line 135, in get_cache signals.request_finished.connect(cache.close) File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 116, in connect with self.lock: File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/gevent/hub.py", line 331, in switch return greenlet.switch(self) 14 were blocked on: File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/gevent/greenlet.py", line 327, in run result = self._run(*self.args, **self.kwargs) File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/django/http/response.py", line 308, in close signals.request_finished.send(sender=self._handler_class) File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 184, in send for receiver in self._live_receivers(sender): File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 242, in _live_receivers with self.lock: File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/gevent/hub.py", line 331, in switch return greenlet.switch(self) One was blocked on: File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/gevent/greenlet.py", line 327, in run# result = self._run(*self.args, **self.kwargs)# File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/django/http/response.py", line 308, in close# signals.request_finished.send(sender=self._handler_class)# File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 184, in send# for receiver in self._live_receivers(sender):# File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 245, in _live_receivers# for (receiverkey, r_senderkey), receiver in self.receivers:# File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/django/dispatch/saferef.py", line 121, in remove# function( self )# File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 270, in _remove_receiver# with self.lock:# File "/servers/python-environments/discosite/local/lib/python2.7/site-packages/gevent/hub.py", line 331, in switch# return greenlet.switch(self) The lock is a Gevent lock so other Greenlets are free to run. Did something change from Django 1.5 to Django 1.6 that would cause this? It seems to be related to sessions, and I use a memcached cache backend for session storage with Pickle serialization, did the memcached driver change? Best regards and thanks for the help, André Cruz -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/ac22099a-7225-4bb6-81ff-3b6ee796e15f%40googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.