소스 검색

Fixes issue #2453 where django db connections are not closed during worker initialisation.

Luke Burden 10 년 전
부모
커밋
3c25f3abdd
2개의 변경된 파일5개의 추가작업 그리고 2개의 파일을 삭제
  1. 1 1
      celery/fixups/django.py
  2. 4 1
      celery/tests/fixups/test_django.py

+ 1 - 1
celery/fixups/django.py

@@ -227,7 +227,7 @@ class DjangoWorkerFixup(object):
 
     def _close_database(self):
         try:
-            funs = [conn.close for conn in self._db.connections]
+            funs = [conn.close for conn in self._db.connections.all()]
         except AttributeError:
             if hasattr(self._db, 'close_old_connections'):  # django 1.6
                 funs = [self._db.close_old_connections]

+ 4 - 1
celery/tests/fixups/test_django.py

@@ -205,10 +205,13 @@ class test_DjangoWorkerFixup(FixupCase):
 
     def test__close_database(self):
         with self.fixup_context(self.app) as (f, _, _):
-            conns = f._db.connections = [Mock(), Mock(), Mock()]
+            conns = [Mock(), Mock(), Mock()]
             conns[1].close.side_effect = KeyError('already closed')
             f.database_errors = (KeyError, )
 
+            f._db.connections = Mock() # ConnectionHandler
+            f._db.connections.all.side_effect = lambda: conns
+
             f._close_database()
             conns[0].close.assert_called_with()
             conns[1].close.assert_called_with()