#24574: python manage.py runserver sleeps forever
----------------------------+---------------------------------------
     Reporter:  s2krish     |      Owner:  nobody
         Type:  Bug         |     Status:  new
    Component:  Migrations  |    Version:  1.7
     Severity:  Normal      |   Keywords:  threading lock, manage.py
 Triage Stage:  Unreviewed  |  Has patch:  0
Easy pickings:  0           |      UI/UX:  0
----------------------------+---------------------------------------
 I have upgraded Django 1.6 o 1.7.7. I was run my project using 'python
 manage.py runserver' command. It went well in test server. However, when I
 tried same in production server, it sleeps forever. Detail Server info is
 attached below. Doing trackback, I figure out problem, It lies on
 django.apps.registry.populate function. Trace back steps as follows:

 1. Command line execution starts.
 {{{#!python
 django.core.management:: utility.execute()
 }}}

 2. It calls application setup process, where it loads enabled Apps
 {{{#!python
 django.core.management ::jango.setup()
 django.setup:: apps.populate(settings.INSTALLED_APPS)
 }}}

 3. Thread starts locking process, so that same application not loaded
 twice.
 {{{#!python
 django.apps.registry::with self._lock:
 }}}

 4. It goes through for each app,
 {{{#!python
 django.apps.registry::app_config.ready()
 ...
 # after many lines of codes
 ...
 for app_config in self.get_app_configs():
 app_config.ready()
 }}}
 5. When it matches <AdminConfig: admin>, it calls to
 {{{#!python
         django.contrib.admin.apps:: self.module.autodiscover()
         django.contrib.admin:: autodiscover_modules('admin',
 register_to=site)
 }}}
 56. autodiscover_modules agains calls django.setup(). I don't have full
 traceback. But it goes like:
 {{{#!python
         django.core.management ::django.setup()
 }}}
 {{{#!python
         django.setup::apps.populate(settings.INSTALLED_APPS)
 }}}
 {{{#!python
         django.apps.registry::with self._lock:
 }}}

 Application stuck here in django.apps.registry::with self._lock: line
 because lock has been already acquired and not released.

 '''Python:'''
 Python 2.7.6 on both server

 '''Dev Server:'''
 Distributor ID: Ubuntu
 Description:    Ubuntu 14.04.1 LTS
 Release:        14.04
 Codename:       trusty
 CPU: 2.40GHz x 1
 MemTotal:   1017880kb

 '''Production Server:'''
 Distributor ID: Ubuntu
 Description:    Ubuntu 14.04 LTS
 Release:        14.04
 Codename:       trusty
 CPU: 2.00GHz x 24
 MemTotal:       4942810

--
Ticket URL: <https://code.djangoproject.com/ticket/24574>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/050.6d827b0af13635e26c5b7dae49e08cfb%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to