Django, RuntimeError ile çalışmayı durdurur: populate () evresel değil


124

WSGI ile Apache sunucusuna konuşlandırılmış bir Django web uygulaması geliştiriyorum ve her şey sorunsuz gidiyor. Bugün, admin.pyyerleşik Django Admin arayüzünü özelleştirmek amacıyla uygulamamda bazı küçük değişiklikler yaptım ve başlangıçta bir sözdizimi hatası (kapatılmamış bir parantez) yaptım. Bu wsgi.py, koda dokunduğumda ve yüklediğimde (sanal ana bilgisayarımda arka plan programı modunda çalışan WSGI var), web sitemin bir Dahili Sunucu Hatası ile değiştirildiği anlamına geliyordu çünkü WSGI sözdizimi hatasına ulaştığında durdu.

Bu yüzden sözdizimi hatasını düzelttim, artık kullanmadığımı kontrol ettim manage.py checkve wsgi.pyyeniden konuşlandırmak için dokundum . Ancak web sitem hala bir Dahili Sunucu Hatası gösteriyor! Apache günlüklerini kontrol ettiğimde gördüğüm şu:

[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Create interpreter 'quotes.cs.cornell.edu|'.
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Adding '/extra/www/html/quotes/quotes_django' to path.
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Adding '/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/' to path.
[Sun Nov 23 13:52:46 2014] [info] [client 128.84.33.19] mod_wsgi (pid=19093, process='quotes.cs.cornell.edu',
  application='quotes.cs.cornell.edu|'): Loading WSGI script '/extra/www/html/quotes/quotes_django/quotes_django/
wsgi.py'.
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Target WSGI script '/extra/www/html/
quotes/quotes_django/quotes_django/wsgi.py' cannot be loaded as Python module.
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Exception occurred processing WSGI
script '/extra/www/html/quotes/quotes_django/quotes_django/wsgi.py'.
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] Traceback (most recent call last):
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/extra/www/html/quotes/quotes_django/
quotes_django/wsgi.py", line 14, in <module>
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     application = get_wsgi_application()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/core/wsgi.py", line 14, in get_wsgi_application
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     django.setup()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/__init__.py", line 21, in setup
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     apps.populate(settings.INSTALLED_APPS)
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/apps/registry.py", line 115, in populate
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     app_config.ready()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/contrib/admin/apps.py", line 22, in ready
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     self.module.autodiscover()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/contrib/admin/__init__.py", line 23, in autodiscover
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     autodiscover_modules('admin', register_to=site)
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/utils/module_loading.py", line 74, in autodiscover_modules
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     import_module('%s.%s' % (app_config.name,         
module_to_search))
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/usr/lib64/python2.7/importlib/__init__.py", line 
37, in import_module
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     __import__(name)
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/extra/www/html/quotes/quotes_django/quotespage/
admin.py", line 25
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     approve_quotes.short_description = "Approve selected
quotes"
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]                  ^
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] SyntaxError: invalid syntax
[Sun Nov 23 13:53:36 2014] [info] [client 128.84.33.19] mod_wsgi (pid=19093, process='quotes.cs.cornell.edu',
  application='quotes.cs.cornell.edu|'): Loading WSGI script '/extra/www/html/quotes/quotes_django/quotes_django/
wsgi.py'.
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Target WSGI script '/extra/www/html/
quotes/quotes_django/quotes_django/wsgi.py' cannot be loaded as Python module.
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Exception occurred processing WSGI
script '/extra/www/html/quotes/quotes_django/quotes_django/wsgi.py'.
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] Traceback (most recent call last):
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]   File "/extra/www/html/quotes/quotes_django/         
quotes_django/wsgi.py", line 14, in <module>
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]     application = get_wsgi_application()
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/core/wsgi.py", line 14, in get_wsgi_application
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]     django.setup()
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/__init__.py", line 21, in setup
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]     apps.populate(settings.INSTALLED_APPS)
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/apps/registry.py", line 78, in populate
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]     raise RuntimeError("populate() isn't reentrant")
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] RuntimeError: populate() isn't reentrant

İlk hata dizisi, WSGI'nin benim admin.py. Bununla birlikte, ikinci hatalar dizisi, Django'da dahili bir hata gösteriyor gibi görünüyor:

RuntimeError: populate() isn't reentrant

populateyönteminden atılır registry.py.

Bu hata mesajını araştırmak şaşırtıcı derecede az bilgi döndürür, bunların hiçbiri Django belgelerinden değildir. Görünüşe göre, bazen bir uygulamayı iki kez adlandırırsan olabilir settings.py, ama ben bunu yapmıyorum. Daha da önemlisi, settings.pyweb sitesinin iyi çalıştığı noktadan beri değişmedim - değiştirdiğim tek şey oldu admin.py.

Yaptığım tüm değişiklikleri geri almayı denedim, böylece tüm Python kodum web sitesi çalıştığı zamanki durumuna geri döndü - ve populate() isn't reentrantWSGI kodunu yeniden yüklemeye çalıştığımda hala hatayı alıyorum!

Ayrıca, INSTALLED_APPS bölümündeki farklı uygulamaları yorumlamayı denedim settings.pyve yalnızca 'django.contrib.staticfiles' etkinken bile hata hala devam ediyor. Garip bir şekilde, tüm uygulamaları yorumlasam bile hatayı alıyorum - Django herhangi bir uygulamayı yüklemese bile hatayı atıyor!

Burada neler olduğunu bilen var mı? Ya da Apache günlüğündeki tracback oldukça yardımcı olmadığından, bu hatayı ayıklamanın daha iyi bir yolu var mı?

Notlar: Django 1.7, Apache 2.2 ve Python 2.7 kullanıyorum.


2
Etrafta olabilecek tüm .pyc dosyalarını kaldırmayı deneyeceğim.
dukebody

Hayır, tüm .pyc dosyalarını kaldırmak yardımcı olmadı. Dokunmak wsgi.pyaynı Apache hatasıyla sonuçlanır ve .pyc dosyaları yeniden oluşturulmaz.
Edward

1
Apache'yi yeniden başlatmayı denediniz mi?
dukebody

Apache'yi yeniden başlatamıyorum çünkü bu sunucuda haklarım yok. Kök erişimine sahip yönetici Pazartesi gününe kadar ofise geri dönmeyecek.
Edward

Benim durumumda, ortamda INSTALLED_APPS'den uygulama yüklenmedi.
maciek

Yanıtlar:


100

Bu, Django ayarlarınızdaki bir yerde bir hatadan kaynaklanıyor. Ne yazık ki, Django bu genel ve kullanışlı olmayan hata mesajının arkasındaki hatayı saklıyor.

Gerçek sorunu ortaya çıkarmak için, django/apps/registry.py80. satırı açın ve değiştirin:

raise RuntimeError("populate() isn't reentrant")

ile:

self.app_configs = {}

Bu, Django'nun yüklemeye devam etmesini ve gerçek hatayı ortaya çıkarmasını sağlayacaktır.

Bu hatayla birkaç farklı nedenden dolayı karşılaştım. Bir keresinde, uygulamamın admin.py'lerinden birinde kötü bir içe aktarma işlemi yapmış olmamdı.


22
Bu, bu ileti dizisindeki en yararlı cevaptır. Şimdi biliyorum ->django.core.exceptions.ImproperlyConfigured: psycopg2_version 2.5.4 or newer is required; you have 2.5 (dt dec pq3 ext)
RickyA

2
Hayatımı kurtardı. Bu çözüm, eksik gereksinimleri ve aralarındaki uyumluluk hatalarını başarılı bir şekilde kontrol etmemi sağladı.
Ángel Jiménez

1
Bu mükemmeldi. Bu satırı değiştirmek, basit bir içe aktarma hatası yaşadığımı görmemi sağlar. Ondan önce neler olduğunu anlayamadım.
James

4
Bu cevap saf altındır.
xpanta

2
@RickyA ve bu, bu cevapla uğraşmak zorunda kalmadığım ve sadece denediğim pip install --upgrade psycopg2ve düzelttiğim için en kullanışlı yorumdu .
Kullanıcı

65

Sunucumun yöneticisi Apache'yi yeniden başlattı ve bu, bu sorunu sihirli bir şekilde çözdü. Sebep olmadan yüklenen aynı Python dosyaları populate() isn't reentrant. Hatta bir sözdizimi hatası olan başka bir dosyayı yüklemeyi ve sonra onu düzeltmeyi denedim ve sunucu yeni dosyayı yükleyebildi ve sorunsuz bir şekilde çalışabildi.

Hala neyin yanlış gittiğini bilmiyorum, ancak sorun ortadan kalktığından beri bunu yanıtlandı olarak işaretliyorum. (StackOverflow kendi cevabımı kabul etmeme izin verir vermez yanıt olarak işaretleyeceğim.)

Güncelleme : Yanlışlıkla sözdizimi hataları içeren Python'u yüklediğimde bu hatayı almaya devam ettikten sonra, Apache'yi yeniden başlatmaktan daha kolay bir çözüm buldum. WSGI populate() isn't reentranthatayı atmaya başladığında , Django projelerimi wsgi.pyşu basit işlevle değiştiriyorum:

def application(environ, start_response):
    if environ['mod_wsgi.process_group'] != '': 
        import signal
        os.kill(os.getpid(), signal.SIGINT)
    return ["killed"]

Daha sonra web sitemi yeniden yükledim ve WSGI arka plan programı işlemi yeniden başlıyor (web sitesi hala aynı 500 hatasını göstermesine rağmen Apache günlüğüne bakarak anlayabilirim).

Daha sonra wsgi.pynormale dönüp tekrar yüklersem, WSGI kodumu fırlatmadan başarıyla alır populate() isn't reentrant(bu sefer sözdizimi hatam olmadığını varsayarak). Yani Apache'nin tamamının yeniden başlatılmasına gerek yok, sadece WSGI işlemi ve bunu root ayrıcalıkları olmadan yapabilirim.


8
Benim için sorun, uygulamalarımdan birinde bir modelde yaptığım değişiklikleri taşımak değildi.
user2662692

Tamam, neredeyse aynı sorunla karşı karşıyayım ve evet, makineyi yeniden başlatırken ve sunucuyu yeniden başlatırken düzeltildi. Ancak sorun tekrar etmeye devam ediyor. Bazen birdenbire. bir ay içinde üç kez meydana geldi. Herhangi bir fikri olan varsa lütfen yardım edin.
Rohit

@Rohit, durumunuzla ilgili yardım istiyorsanız, muhtemelen onu açıklayan yeni bir soru göndermelisiniz. Buradaki yorumlarda cevap alma olasılığınız düşüktür.
Edward

4
startup-timeoutMod_wsgi'nin daha yeni sürümlerinde, Django başlatılırken, bir veritabanının mevcut olmaması gibi geçici hatalardan kurtarmaya yardımcı olan mod_wsgi'nin daemon modu için bir seçenek vardır. Zaman aşımı, WSGI uygulaması zaman aşımı süresinden sonra düzgün şekilde yüklenmezse işlemin otomatik olarak yeniden başlatılmasına neden olur. Kendi kodunuzla kalıcı bir sorununuz olduğunda bu bile yardımcı olmayacaktır. Bu durumda, populate()kodunuzun başarısız olmasının gerçek nedenini göstereceğinden , hatayı değil ilk hatayı arayın .
Graham Dumpleton

1
"Django projesinin bu basit işlevli wsgi.py dosyası" ne demek? Bir dosyayı bir işlevle nasıl değiştirirsiniz?
Cerin

46

Bunun eski bir cevap olduğunu biliyorum ama çözümümle katkıda bulunacağım:

Sorunun kaynağını teşhis etmenin bir yolu olarak çalıştırın manage.py checkve orada bir şey bulup bulmadığınıza bakın.

Benim durumumda güncel olmayan bir gereksinim sorundu ve django bir alt modülü içe aktaramıyordu

Gereksinimlerinizin güncel olduğundan emin olun


2
Apache'de Hata 500 alıyorum ve sorunu bulamıyorum. Bu komutla manage.py checksorunu buldum. Teşekkür ederim.
Ali Hesari

13

Bu bir tepki değil, bir yansıma.

Django 1.7'ye yükselttiğinizde ve 500 hatası aldığınızda ve sayfanızı yeniden yüklediğinizde, Apache "populate () reentrant değil" der. Sanırım sayfanızı yüklediğinizde Apache, uygulamanız için ihtiyacınız olan tüm modülleri yüklüyor ve hata ele alındığında modülü boşaltmıyor. Yani, sayfanızı yeniden yüklediğinizde, apache bu modülleri tekrar yükler, ancak zaten yüklenmiştir. Bu nedenle, apache "populate () reentrant değil" diyor.

Bunu düzeltmek için iki eylemim var: Apache'yi yeniden başlatın veya ilk 5OO hatasını işleyen hatayı düzeltin.

Apache'yi şununla yeniden başlatmayı deneyin:

sudo service httpd restart

Umarım bu sana yardımcı olur.


10

Google App Engine'i kullanırken bu hatayı alıyorsanız, buna neden olabilecek diğer hatalar için günlüklerinizi kontrol edin. Alıyordum:

ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3

SQLite'ı Google App Engine ile kullanamazsınız, bu nedenle bu hatayı ve hatayı da durduran DATABASESbölümü yorumlayarak .settings.pyRuntimeError("populate() isn't reentrant")


Bu, neden her şeyin yerel olarak iyi çalıştığını ancak GAE'ye dağıtıldığında 500 hata aldığını açıklıyor. Küçük bir ipucu: GAE günlük sayfasındaki "yükseltme" metninin aranması, donturner'ın işaret ettiği hata mesajına yol açan tam bir isabet oluşturdu. Onun çözümü günümü kurtardı :-)
Golden Thumb



2

Aynı problemle karşılaştım ve etrafa bakmaya başladım.

Şimdi onu çalıştırdım, bu yüzden sizinle paylaşmam gerektiğini düşündüm çocuklar!

Tek yaptığım yapmak oldu chown user:group /to/path -Rve chmod 770 /to/path -Ryeni baştan ve işe yaradı.


2

Bu, aynı Apache mod-wsgi hatası için geçerli yanıtların güzel bir koleksiyonuna benziyor, her adam kendisi için çalışanı gönderiyor, işte benimki:

Dağıttıktan sonra proje gereksinimlerinizi güncellemeyi unutmayın :)


2

Aynı sorunu yaşadım ve benim için hatanın kaynağı, üzerinde çalıştığım bir dosyadaki sözdizimi hatasıydı. Yazım populate() is not reentranthatasını düzelttikten sonra hata ortadan kalktı.

Django'yu bir wsgi betiğinden çalıştırıyorsanız, wsgi betiğini komut satırından çalıştırarak yazım hatasını tanımlayabilirsiniz. Örneğin:

cd /usr/local/www/wsgi-scripts/
python djangolauncher.wsgi

2

Bu hata, kodda boşluk ve sekme tutarsızlıklarının kullanılması durumunda da üretildi.


1

Kurulum: Ubuntu 14.04, Django 1.10, Python 3.5 (inç virtualenv).

Bu çözümlerin çoğunu şanssız denedim, ancak sonra Apache hata günlüğünün benim durumumda iki farklı hata içerdiğini fark ettim. Biri bir sayfayı ziyaret etmeye çalıştığında meydana gelen, diğeri başlangıçta olan. Başlangıç ​​olanı kaçırdım çünkü genellikle sayfayı birkaç kez yenilemeye çalıştım ve bu nedenle yalnızca birkaç kez tekrarlanan ziyaret hatasını gördüm.

Daha sonra bunun yerine başlangıç ​​hatası için çözümler aradım ve bu sorunun çözümü benim için çalıştı . Kısaca, mod_wsgipaketin dolambaçlı bir şekilde güncellenmesini içerir .

Aylardır mod_wsgisürümlerdeki uyumsuzluk hakkında uyarılar alıyordum , ancak birdenbire Apache 500 hatasıyla sonuçlandı. Bana mantıklı gelmiyor.

Tahminimce bu RuntimeError: populate() isn't reentranthata genellikle kişinin bir başlangıç ​​hatası araması gerektiğinin bir işaretidir, bu da gerçek sorunu gösterir.

ziyarette

[Sat Oct 15 03:38:08.900966 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Target WSGI script '/django/GP/GP/wsgi.py' cannot be loaded as Python module.
[Sat Oct 15 03:38:08.901409 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Exception occurred processing WSGI script '/django/GP/GP/wsgi.py'.
[Sat Oct 15 03:38:08.901662 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] Traceback (most recent call last):
[Sat Oct 15 03:38:08.902184 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/GP/GP/wsgi.py", line 16, in <module>
[Sat Oct 15 03:38:08.902217 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     application = get_wsgi_application()
[Sat Oct 15 03:38:08.902501 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
[Sat Oct 15 03:38:08.902529 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     django.setup(set_prefix=False)
[Sat Oct 15 03:38:08.902726 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/__init__.py", line 27, in setup
[Sat Oct 15 03:38:08.902755 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     apps.populate(settings.INSTALLED_APPS)
[Sat Oct 15 03:38:08.902924 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/apps/registry.py", line 78, in populate
[Sat Oct 15 03:38:08.902953 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     raise RuntimeError("populate() isn't reentrant")
[Sat Oct 15 03:38:08.903111 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] RuntimeError: populate() isn't reentrant

başlamak

[Sat Oct 15 03:38:08.900966 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Target WSGI script '/django/GP/GP/wsgi.py' cannot be loaded as Python module.
[Sat Oct 15 03:38:08.901409 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Exception occurred processing WSGI script '/django/GP/GP/wsgi.py'.
[Sat Oct 15 03:38:08.901662 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] Traceback (most recent call last):
[Sat Oct 15 03:38:08.902184 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/GP/GP/wsgi.py", line 16, in <module>
[Sat Oct 15 03:38:08.902217 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     application = get_wsgi_application()
[Sat Oct 15 03:38:08.902501 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
[Sat Oct 15 03:38:08.902529 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     django.setup(set_prefix=False)
[Sat Oct 15 03:38:08.902726 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/__init__.py", line 27, in setup
[Sat Oct 15 03:38:08.902755 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     apps.populate(settings.INSTALLED_APPS)
[Sat Oct 15 03:38:08.902924 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/apps/registry.py", line 78, in populate
[Sat Oct 15 03:38:08.902953 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     raise RuntimeError("populate() isn't reentrant")
[Sat Oct 15 03:38:08.903111 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] RuntimeError: populate() isn't reentrant
[Sat Oct 15 03:38:43.291502 2016] [:error] [pid 28272] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Sat Oct 15 03:38:43.291579 2016] [:error] [pid 28272] Traceback (most recent call last):
[Sat Oct 15 03:38:43.291604 2016] [:error] [pid 28272]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Sat Oct 15 03:38:43.292356 2016] [:error] [pid 28272]     assert tlock is not None
[Sat Oct 15 03:38:43.292377 2016] [:error] [pid 28272] AssertionError: 
[Fri Oct 14 23:38:43.412942 2016] [:error] [pid 28299] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.413044 2016] [:error] [pid 28299] Traceback (most recent call last):
[Fri Oct 14 23:38:43.413076 2016] [:error] [pid 28299]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.425037 2016] [:error] [pid 28275] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.425125 2016] [:error] [pid 28275] Traceback (most recent call last):
[Fri Oct 14 23:38:43.425157 2016] [:error] [pid 28275]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.427625 2016] [:error] [pid 28274] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.427694 2016] [:error] [pid 28274] Traceback (most recent call last):
[Fri Oct 14 23:38:43.427722 2016] [:error] [pid 28274]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.432020 2016] [:error] [pid 28273] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.432078 2016] [:error] [pid 28273] Traceback (most recent call last):
[Fri Oct 14 23:38:43.432105 2016] [:error] [pid 28273]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.438577 2016] [:error] [pid 28299]     assert tlock is not None
[Fri Oct 14 23:38:43.438654 2016] [:error] [pid 28299] AssertionError: 
[Fri Oct 14 23:38:43.442174 2016] [:error] [pid 28274]     assert tlock is not None
[Fri Oct 14 23:38:43.442226 2016] [:error] [pid 28274] AssertionError: 
[Fri Oct 14 23:38:43.447227 2016] [:error] [pid 28276] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.447294 2016] [:error] [pid 28276] Traceback (most recent call last):
[Fri Oct 14 23:38:43.447326 2016] [:error] [pid 28276]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.448813 2016] [:error] [pid 28277] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.448876 2016] [:error] [pid 28277] Traceback (most recent call last):
[Fri Oct 14 23:38:43.448903 2016] [:error] [pid 28277]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.450188 2016] [:error] [pid 28273]     assert tlock is not None
[Fri Oct 14 23:38:43.450231 2016] [:error] [pid 28273] AssertionError: 
[Fri Oct 14 23:38:43.456680 2016] [:error] [pid 28275]     assert tlock is not None
[Fri Oct 14 23:38:43.456737 2016] [:error] [pid 28275] AssertionError: 
[Fri Oct 14 23:38:43.461761 2016] [:error] [pid 28277]     assert tlock is not None
[Fri Oct 14 23:38:43.461826 2016] [:error] [pid 28277] AssertionError: 
[Fri Oct 14 23:38:43.466165 2016] [:error] [pid 28276]     assert tlock is not None
[Fri Oct 14 23:38:43.466219 2016] [:error] [pid 28276] AssertionError: 
[Fri Oct 14 23:38:43.658971 2016] [mpm_prefork:notice] [pid 28268] AH00169: caught SIGTERM, shutting down
[Sat Oct 15 03:38:43.691909 2016] [:error] [pid 28272] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Sat Oct 15 03:38:43.691968 2016] [:error] [pid 28272] Traceback (most recent call last):
[Sat Oct 15 03:38:43.691996 2016] [:error] [pid 28272]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Sat Oct 15 03:38:43.693126 2016] [:error] [pid 28272]     assert tlock is not None
[Sat Oct 15 03:38:43.693159 2016] [:error] [pid 28272] AssertionError: 
[Fri Oct 14 23:38:44.490316 2016] [:warn] [pid 28349] mod_wsgi: Compiled for Python/3.4.0.
[Fri Oct 14 23:38:44.490407 2016] [:warn] [pid 28349] mod_wsgi: Runtime using Python/3.4.3.
[Fri Oct 14 23:38:44.505672 2016] [mpm_prefork:notice] [pid 28349] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.19 mod_wsgi/3.4 Python/3.4.3 configured -- resuming normal operations
[Fri Oct 14 23:38:44.505764 2016] [core:notice] [pid 28349] AH00094: Command line: '/usr/sbin/apache2'

Yeni bir soru oluşturun. Soruyu cevap olarak sormayın.
Graham Dumpleton

1
Ben soru sormuyorum. Benim için çalışan aynı soruna bir çözüm göndermek. Apache 500 hatası atar ve günlük dosyasındaki hata burada sorulan soru ile aynıdır. Lütfen cevabımı tekrar okuyun. :)
CoderGuy123

Ardından, başka bir soruya bağlantı vermek yerine gerçek çözümü yanıtınıza ekleyin. Sorun şu ki, diğer gönderi populate()konudan hiç bahsetmiyor ve bana tamamen farklı bir sorun gibi görünüyor, bu yüzden aynı sorunu nasıl çözdüğünü düşündüğünüzü göremiyorum. Herkesin anlayabileceği kadarıyla, diğer
gönderideki

Buradaki adımları tekrarlamak gereksizdir. Hatalar aynı günlükte görünür, sadece buradaki OP'nin hepsini içermedi. Sayfaya erişildiğinde bir hata gösterilir (bu buradaki OP'deki kısımdır), Apache başladığında bir diğeri (diğer iş parçacığındaki kısım budur).
CoderGuy123

1

Bu sorunun sorulmasından bu yana uzun zaman geçtiğini biliyorum, ancak bu konuyla burada tartışılmadığını görmediğim bir sorun nedeniyle karşılaştım. RuntimeError: populate() isn't reentrantCentOS 7'de SELinux nedeniyle hata alıyordum. Django'nun bir ana dizinden hizmet vermesini sağladım ve populate () hatası bir izin sorunundan kaynaklandığından, ana dizinlerin okunmasına izin veren SELinux boolean'ı etkinleştirmem gerekiyordu. Benim için çözüm şuydu setsebool -P httpd_read_user_content 1. Umarım bu, bu sorunu yaşayan birine yardımcı olur.


CentOS 7 ve SELinux ile aynı sorunu yaşadık. chconSorunlu .sodosyanın içeriğini olarak değiştirerek düzelttik httpd_sys_script_exec_t .
Jon

1

Çok sayıda cevap bunu netleştirir; bu, genellikle Apache / WSGI'nin yüklenmesiyle ilgili, birden çok kök nedeni olabilen genel bir hatadır.

Bu sayfadaki tüm bu yanıtlar bir tür kontrol listesi olarak işlev görmelidir ve bu bağlamda, bu hata örneğimin temel nedenini eklemek istiyorum: settings.py dosyanıza bir 'os içe aktarma' ekleyememe.

Ekibimizde özellikle gereksiz bir paketi kaldırmayı amaçlayan bir geliştiricimiz vardı ve bunun yerine üretim settings.py dosyasının üst kısmından 'işletim sistemini içe aktar'ı kaldırdık. Bir apache yeniden başlatıldıktan sonra, uygulamamız yeniden başlamadı ve korkunç 'RuntimeError: populate (), reentrant değil' hatasını aldık.

Hızlı bir 'python manage.py kontrolü' sorunu ortaya çıkarmadı, ancak bir 'python settings.py' bunu gösterdi; os paketi yüklenmedi.

Bu hatayı alıyorsanız, aramanızı settings.py dosyalarınızı ve ayrıca WSGI dosyanızı kontrol etmeye odaklanın.


3
Daha da önemlisi, hata günlüğüne geri döndüğünüzden ve Apache veya mod_wsgi daemon işlemlerinden birinin yeniden başlatılmasından sonra oluşan ilk hata mesajını aradığınızdan emin olun. Bu ilk hata size hatanın gerçek nedenini söyleyecektir, bundan sonra aynı işlem için yapılan tüm istekler reentrantyalnızca hatayı belirtecektir . Arka plan programı modunda, startup-timeoutkodlama hataları yerine geçici hatalar nedeniyle bu sorunu yaşıyorsanız seçeneği kullandığınızdan emin olun . En azından bu şekilde otomatik olarak iyileşebilir.
Graham Dumpleton

Bu doğru cevap, hata geneldir, çalışma zamanı hatasından hemen önce mesajı kontrol edin.
Popieluch

1

RuntimeError: populate() isn't reentrant

Herhangi bir şey olabilir, bu yüzden bu soru için bu kadar çok farklı cevap var.

İşin püf noktası RuntimeError,. Sizin durumunuzda, 15. satırda /extra/www/htmlquotes/quotes_django/quotespage/admin.py dosyasında bir sözdizimi hatası var gibi görünüyor, bakınız:

Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/extra/www/htmlquotes/quotes_django/quotespage/admin.py", line 25
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] pprove_quotes.short_description = "Approve selected quotes"
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]                  ^
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] SyntaxError: invalid syntax

1

AWS Elastic Beanstalk hakkında not: settings.pyDjango-admin tarafından yazılan varsayılan değer , veri kaynağı olarak yerel bir sqlite veritabanına referans içerir. Bu muhtemelen yerel işletim sisteminizde çalışacak, ancak AWS EB'de çalışmayacaktır ve populate() isn't reentrantçalışma zamanı hatası verecektir . Bunu test etmek için , uygulamanın içindeki DATABASES={<...>}ifadeyi yorumlamanız settings.py, dağıtmanız ve yeniden açmanız yeterlidir .


Bu, örneğin, varsayılan sqlite veritabanıyla Django sürüm 2.2 (veya üzeri) kullanarak AWS EB'ye dağıtırsanız oluşur. Sen alırsınız django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).izledi RuntimeError: populate() isn't reentrant. Gönderen AWS docs : "Django 2.2 Elastik Beanstalk Python 3.6 platformu ile uyumlu değildir." (yazarken)
djvg

0

Bu sorunu yaşadım ve taahhütlerimi geri izleyene kadar neden bir cevap bulamadım. Görünüşe göre kurulumu bozan otomatik tamamlama nedeniyle yanlışlıkla içe aktarma eklemiştim.

# found in models.py from msilib.schema import SelfReg

Apache hata günlüğünde: RuntimeError ("populate (), evresel değil")

Windows dev ortamımda iyi çalıştı ancak ubuntu / apache sunucusunda başarısız oldu.


0

Bu ayarın sırasını değiştirdikten sonra aynı hataya giriyordum:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
)

daha önce burada tekrar sıraya koymak ve apache'yi yeniden başlatmak sorunu çözdü.


0

Benim durumumda, ben bir vardı custom renderer classiçin Django Rest Frameworkmarka için: Bazı amaçla ben oluşturucu sınıfının yöntemi "get_context" geçersiz kılmak için (tam bilgi vardı,django toolbar doğru SQL sorgusu sayımı vermek)

O sınıfı kaldırdım ve yeniden konuşlandırdım. İşe yaradı.


0

Benim durumumda, gerekli bir pip paketi eksik olduğu için hata oluştu.

Ben de bir pip install -r requirements.txtapache yaptım ve işler tekrar çalıştı.


0

Virtualenv dizinini kaldırmak, virtualenv'i yeniden oluşturmak, ardından tüm gereksinimleri yeniden yüklemek benim için düzeltildi.


0

Nedenimi listeye ekliyorum. Benim için bunun nedeni, bir işlem dizini ile aynı dizine sahip bir django hizmetine sahip olmamdı. İşlemi / dizini yeniden adlandırmak sorunu çözdü.


0

Bir özyinelemem vardı django.setup(), örneğin yığın izinde bir django.setup()içeride a yazmayı denedim app/models.py, django bunu yakınlarda göstermeye çalıştı:

... "site-packages/django/apps/config.py", line 211, in import_models
    self.models_module = import_module(models_module_name)
...
... ./myproject/myapp/models.py ...

yani evet, django kurulurken django'yu kurmaya çalışmayın ...


0

Apache sunucusunu benim için yeniden başlatmak sorunu çözdü. Bunu $ sudo service apache2 restart komutunu kullanarak yapabilirsiniz.


0

Aynı sorunu yaşadım, benim için işe yarayan şey / settings.py içindeki varsayılan veritabanı ayarlarını yorumlamaktı. Ayrıca django'nun sonraki sürümlerinin ebs ile uyumlu olmadığını okudum.


0

Benim için hata, mysqlclientrequirements.txt dosyasında eksik bir paketti .

İlk önce mysqlclientpaketi şu şekilde kurdum :

pip install mysqlclient

daha sonra requirements.txt dosyasını şu şekilde güncelledim:

pip freeze > requirements.txt

ve bu benim sorunumu çözdü.


-1

Benim durumumda, doldurma yöntemini bozan bir hataya neden olan dairesel bir içe aktarım vardı.


-1

2 Euro sentimi atmak için:

Docker'da çalışan bir kurulumu yeniden oluşturdum. Yeni Docker kurulumu başarısız oldu

populate isn't reentrant

bu genel bir hata gibi görünüyor. Benim durumumda bunu göz ardı ettim

pip install Django

gerekli sürüm yerine en son sürümü ( 2.0) yükler 1.11. Bunu olarak değiştiriyorum

pip install Django==1.11

sorunumu çözdüm.


-1

Bence bu, yanlış bir şey olduğunda genel bir hata settings.py. Bazen, yüklü uygulamaları birer birer kaldırarak sorunu deneme yanılma yoluyla bulabilirim. Bazı durumlarda, yüklü uygulamalarla ilgili değildir. Ancak deneyimlerime göre, her durumda bu settings.pydosya içinde bir sorun .


-1

settings.py'nin yüklü uygulama bölümünde api adlarınızdan iki kez bahsedip bahsetmediğinizi kontrol edin.

Uygulama tanımı

INSTALLED_APPS = [
    ...
    'rest_framework',
    'myapp_api',
    'myapp_api.apps.myappWebserviceApiConfig',    
]

Uygulama tanımı

INSTALLED_APPS = [
    ...
    'rest_framework',
    'myapp_api.apps.myappWebserviceApiConfig',
]

Çift girişleri kaldırmak sorunumu çözdü


ancak eğiticide INSTALLED_APPS = ['allauth', 'allauth.account', 'allauth.socialaccount',] yazıyor
ming

@ming İsteğe bağlıdır.
Swati Srivastava
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.