Django перестает работать с RuntimeError: populate () не реентерабелен

django apache mod-wsgi django-wsgi

52650 просмотра

29 ответа

Я разрабатывал веб-приложение Django, развернутое на сервере Apache с WSGI, и все шло гладко. Сегодня я сделал небольшие изменения в своем приложении, admin.pyпытаясь настроить встроенный интерфейс администратора Django, и первоначально сделал синтаксическую ошибку (закрытые скобки). Это означало, что когда я коснулся wsgi.pyи загрузил код (у меня на виртуальном хосте работает WSGI в режиме демона), мой веб-сайт был заменен внутренней ошибкой сервера, потому что WSGI остановился, когда столкнулся с синтаксической ошибкой.

Поэтому я исправил синтаксическую ошибку, проверил, что у меня больше нет с ними manage.py check, и коснулся wsgi.pyповторного развертывания. Но мой веб-сайт по-прежнему отображает внутреннюю ошибку сервера! Проверяя логи Apache, вот что я вижу:

[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

Первая серия ошибок показывает сбой WSGI из-за синтаксической ошибки в моем admin.py. Тем не менее, вторая серия ошибок, кажется, показывает внутреннюю ошибку Django:

RuntimeError: populate() isn't reentrant

выброшен из populateметода registry.py.

Поиск этого сообщения об ошибке возвращает на удивление мало информации, ничего из документации Django. Очевидно, иногда это может произойти, если вы дважды назовете приложение settings.py, но я этого не делаю. Что еще более важно, я не изменился settings.pyс того момента, когда веб-сайт работал нормально - единственное, что я изменил, было admin.py.

Я попытался отменить все сделанные мной изменения, поэтому весь мой код Python вернулся в состояние, в котором он находился во время работы веб-сайта, - и я по-прежнему получаю сообщение об populate() isn't reentrantошибке, когда пытаюсь заставить WSGI перезагрузить код!

Я также пытался закомментировать различные приложения в разделе INSTALLED_APPS settings.py, и даже при включенном только django.contrib.staticfiles ошибка все равно происходит. Как ни странно, я все равно получаю сообщение об ошибке, даже если закомментирую все приложения - Django выдает ошибку, даже если не загружает никаких приложений!

Кто-нибудь знает, что здесь происходит? Или какой-нибудь лучший способ для меня отладить эту ошибку, так как трассировка в журнале Apache довольно бесполезна?

Примечания: я использую Django 1.7, Apache 2.2 и Python 2.7.

Автор: Edward Источник Размещён: 17.05.2019 02:56

Ответы (29)


54 плюса

Решение

Администратор моего сервера перезапустил Apache, и это волшебным образом решило эту проблему. Точно такие же файлы Python загружаются без проблем populate() isn't reentrant. Я даже попытался загрузить другой файл с синтаксической ошибкой, а затем исправить его, и сервер смог загрузить новый файл и запустить его без проблем.

Я все еще не знаю, что пошло не так, но я отмечаю это как ответ, так как проблема исчезла. (Хорошо, я отмечу его как ответ, как только StackOverflow позволит мне принять мой собственный ответ.)

Обновление : Продолжая получать эту ошибку, когда я случайно загружаю Python с ошибками синтаксиса, я нашел обходной путь, который проще, чем перезапуск Apache. Когда WSGI начинает выдавать populate() isn't reentrantошибку, я заменяю свой проект Django wsgi.pyэтой простой функцией:

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

Затем я перезагружаю свой веб-сайт, и процесс демона WSGI перезапускается (что я могу сказать, просматривая журнал Apache, даже если на веб-сайте все еще отображается та же ошибка 500).

Если я затем wsgi.pyвернусь к нормальному состоянию и перезагрузлю снова, WSGI успешно заберет мой код без сбоев populate() isn't reentrant(при условии, что на этот раз у меня нет синтаксических ошибок). Таким образом, весь Apache не нуждается в перезапуске, только процесс WSGI, и я могу сделать это без привилегий root.

Автор: Edward Размещён: 24.11.2014 03:59

27 плюса

Я знаю, что это старый ответ, но я внесу свое решение:

В качестве способа диагностики источника проблемы запустите manage.py checkи посмотрите, найдете ли вы там что-нибудь

В моем случае проблема заключалась в устаревшем требовании, и django не смог импортировать субмодуль

Убедитесь, что ваши требования актуальны

Автор: Jesus Gomez Размещён: 14.04.2017 03:56

9 плюса

Если вы получаете эту ошибку при использовании Google App Engine, проверьте в своих журналах другие ошибки, которые могут быть причиной этого. Я получаю:

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

Вы не можете использовать SQLite с Google App Engine, поэтому комментирование DATABASESраздела settings.pyостановило эту ошибку, а также RuntimeError("populate() isn't reentrant")ошибку.

Автор: donturner Размещён: 14.05.2015 05:00

4 плюса

Вы можете исправить это, не перезапуская Apache, коснувшись файла (кроме wsgi.py), который находится на ранней стадии процесса загрузки. Например, ваш файл настроек:

$ touch settings.py

Я тоже не решил это должным образом, но больше информации в моем вопросе здесь: Мониторинг изменения кода работает с Django 1.7 на mod-wsgi

Автор: seddonym Размещён: 06.01.2015 06:10

4 плюса

Это не ответ, а отражение.

Когда вы обновляетесь до django 1.7 и у вас появляется ошибка 500 и вы перезагружаете страницу, Apache говорит: «populate () не реентерабелен». Я думаю, что когда вы загружаете свою страницу, Apache загружает все модули, которые вам нужны для вашего приложения, и когда ошибка обрабатывается, модуль не выгружается. Таким образом, когда вы перезагружаете свою страницу, apache загружает снова эти модули, но он уже загружен. Итак, apache говорит: «populate () не является повторно входящим».

У меня есть два действия, чтобы исправить это: перезапустить apache или исправить ошибку, которая обработала первую ошибку 5OO.

Я надеюсь, что это поможет вам.

Автор: Vianney Thurotte Размещён: 24.11.2014 10:24

3 плюса

Это похоже на хорошую коллекцию действительных ответов на ту же ошибку Apache mod-wsgi, каждый из которых публикует сообщение, которое работает для него, поэтому вот мое:

Не забудьте обновить требования вашего проекта после развертывания :)

Автор: José L. Patiño Размещён: 27.01.2016 02:24

3 плюса

Apache хранит файл wsgi в своем кэше. Отключить кеширование Apache файлов Python

Поэтому сначала удалите файл wsgi и перезапустите ваш acpache, а затем снова добавьте файл wsgi и перезапустите apache.

Автор: Abhishek Lodha Размещён: 26.05.2016 07:17

3 плюса

У меня возникла та же проблема, и источником ошибки для меня была просто синтаксическая ошибка в файле, с которым я работал. После исправления опечатки populate() is not reentrantошибка исчезла.

Если вы запускаете django из скрипта wsgi, вы можете определить опечатку, просто запустив скрипт wsgi из командной строки. Например:

cd /usr/local/www/wsgi-scripts/
python djangolauncher.wsgi
Автор: Peter Размещён: 31.03.2015 04:12

2 плюса

Я просто столкнулся с той же проблемой, поэтому начал осматриваться.

Теперь у меня это работает, поэтому я решил поделиться этим с вами, ребята!

Все, что я сделал, это сделал, chown user:group /to/path -Rи chmod 770 /to/path -Rвсе снова и снова, и это сработало.

Автор: Behzad Размещён: 11.11.2015 06:17

2 плюса

Установка: Ubuntu 14.04, Django 1.10, Python 3.5 (in virtualenv).

Я попробовал многие из этих решений без удачи, но затем я заметил, что журнал ошибок Apache содержит две разные ошибки в моем случае. Тот, который происходит, когда кто-то пытается посетить страницу, другой, который происходит при запуске. Я пропустил автозагрузку, потому что обычно пытался обновить страницу пару раз и, таким образом, только несколько раз видел ошибку при посещении.

Я тогда искал решения для ошибки запуска вместо этого, и решение этого вопроса работало для меня . Вкратце, это включает обновление mod_wsgiпакета окольным путем.

Я месяцами получал предупреждения о несоответствии mod_wsgiверсий, но внезапно это привело к ошибкам Apache 500. Не имеет никакого смысла для меня.

Я предполагаю, что эта RuntimeError: populate() isn't reentrantошибка обычно является признаком того, что нужно искать ошибку запуска, которая указывает на реальную проблему.

в гостях

[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: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'
Автор: Deleet Размещён: 15.10.2016 04:12

2 плюса

Я знаю, что прошло много времени с тех пор, как был задан этот вопрос, но я просто столкнулся с этой проблемой из-за проблемы, которую я не видел здесь обсуждаемой. Я получал RuntimeError: populate() isn't reentrantошибку из-за SELinux на CentOS 7. У меня Django обслуживался из домашнего каталога, и мне просто нужно было включить булеву SELinux, которая позволяла читать домашние каталоги, поскольку ошибка populate () была связана с проблемой разрешений. Решение для меня было setsebool -P httpd_read_user_content 1. Я надеюсь, что это помогает кому-то, имеющему эту проблему.

Автор: Ad Astra Размещён: 08.03.2017 01:39

1 плюс

Эта ошибка также генерируется при несовместимости использования пробела и табуляции в коде.

Автор: webbyfox Размещён: 30.06.2018 06:44

0 плюса

У меня была эта проблема, и я не мог найти ответ, почему, пока я не вернул свои коммиты. Видимо, я добавил случайный импорт из-за автозаполнения, который испортил настройку.

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

В журнале ошибок apache: RuntimeError («populate () не реентерабелен»)

Он отлично работал в моей среде Windows Dev, но не удалось на сервере Ubuntu / Apache.

Автор: Jan Размещён: 12.06.2015 01:25

0 плюса

Я собирался в эту же ошибку после изменения порядка этого параметра:

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',
)

возвращение его в порядок здесь и перезапуск apache устранили проблему.

Автор: Romain Jouin Размещён: 01.11.2015 06:29

0 плюса

Это также может быть вызвано наличием повторяющейся записи в INSTALLED_APPS

Автор: Alvin Размещён: 19.01.2016 06:17

0 плюса

В моем случае у меня был custom renderer classfor Django Rest Framework, для какой-то цели мне пришлось переопределить метод класса визуализации "get_context" (полное раскрытие: чтобы django toolbarдать правильный счетчик SQL-запросов)

Я удалил этот класс и перераспределил. Это сработало.

Автор: Karan Kumar Размещён: 12.08.2016 12:16

0 плюса

В моем случае ошибка произошла из-за отсутствия необходимого pip-пакета.

Так что я сделал pip install -r requirements.txt, перезапустил Apache и все снова заработало.

Автор: flix Размещён: 26.07.2017 09:39

0 плюса

Удаление каталога virtualenv, воссоздание virtualenv, а затем переустановка всех требований устранили его для меня.

Автор: Farid El Nasire Размещён: 28.02.2018 06:38

0 плюса

Множество ответов проясняет это; Это общая ошибка, которая может иметь несколько основных причин, обычно связанных с загрузкой Apache / WSGI.

Все эти ответы на этой странице должны быть своего рода контрольным списком, и в этом ключе я хочу добавить основную причину моего экземпляра этой ошибки: не удалось добавить «import os» в ваш файл settings.py.

В частности, в нашей команде был разработчик, который намеревался удалить ненужный пакет, а вместо этого удалил «import os» из верхней части рабочего файла settings.py. После перезапуска apache наше приложение не перезапустилось, и мы получили страшную ошибку «RuntimeError: populate () not reentrant».

Быстрая проверка python manage.py не выявила проблему, но появилась python settings.py; пакет ОС не был загружен.

Если у вас есть эта ошибка, сфокусируйте свой поиск на проверке ваших файлов settings.py, а также файла WSGI.

Автор: Tom Halpin Размещён: 08.04.2018 12:50

0 плюса

RuntimeError: populate() isn't reentrant

Может быть что угодно, поэтому на этот вопрос так много разных ответов.

Хитрость заключается в том, чтобы посмотреть на сообщение об ошибке непосредственно перед RuntimeError. В вашем случае, кажется, есть синтаксическая ошибка в файле /extra/www/htmlquotes/quotes_django/quotespage/admin.py в строке 15, смотрите:

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
Автор: Popieluch Размещён: 01.02.2019 08:21

0 плюса

Мое состояние 1) Ubuntu 14.04 LTS 2) Python Virtual Env 3) Тест ENV и продукт ENV

в env теста мой django нормальный, но в env продукта мой django хахаха

поднять RuntimeError ("populate () не реентерабелен")

Итак, мой продукт env отсутствие модуля

pip install mysql-python
Автор: 孤独的死狼 Размещён: 27.02.2019 04:27

-1 плюса

В моем случае у меня был циклический импорт, что приводило к ошибке, которая нарушала метод заполнения.

Автор: Luis Carlos Mejia Размещён: 03.08.2017 10:11

-1 плюса

Я решил проблему с добавлением __init__.pyв папку с приложениями.

touch /mainprojectfolder/projectfolderwhichcontainswsgi.py/apps/__init__.py

Тогда это сработало!

Автор: cKurultayKalkan Размещён: 03.10.2017 10:01

-1 плюса

Чтобы добавить 2 евро цента:

Я воссоздал рабочую настройку в Docker. Новая настройка Docker не удалась с

populate isn't reentrant

которая кажется общей ошибкой. В моем случае я упустил из виду, что

pip install Django

устанавливает последнюю версию ( 2.0) вместо требуемой версии 1.11. Меняя это на

pip install Django==1.11

исправил мою проблему.

Автор: Olaf Dietsche Размещён: 01.01.2018 01:43

-1 плюса

Я думаю, что это общая ошибка, когда что-то не так settings.py. Иногда я могу найти проблему методом проб и ошибок, удаляя установленные приложения по одному. В некоторых случаях это не относится к установленным приложениям. Но по моему опыту, во всех случаях это проблема в settings.pyфайле.

Автор: Noel Размещён: 01.03.2018 09:09

-1 плюса

проверьте, упоминали ли вы свои имена API дважды в разделе установленного приложения settings.py.

Определение приложения

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

Определение приложения

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

Удаление повторяющихся записей решило мою проблему

Автор: Swati Srivastava Размещён: 03.07.2018 05:45

-1 плюса

Недавно у меня была такая же ошибка в моем проекте django [Django1.11].

Проблема заключалась в том, что мои приложения больше не живут в нестандартном месте django, обычно приложения живут в корневом каталоге проекта.

Я недавно переместил свои приложения в папку приложений для целей регистрации, но забыл обновить свои шаблоны.

Моя структура [./awesome_potatoes/apps/first_app/]

Поэтому, когда я запускаю новое приложение, происходит следующее: django не добавляет имя dir в файл apps.py или в любой файл python в этом отношении из-за устаревшего шаблона.

apps.py

name = 'first_app'

Исправить [после обновления моих шаблонов]

name = 'apps.first_app'

Автор: Illegal Operator Размещён: 03.10.2018 03:12

-1 плюса

Я не решаюсь добавить это как ответ, так как на самом деле это просто описание соответствующего случая. Тем не менее, это не казалось разборчивым в качестве комментария.

Я столкнулся с этой ошибкой при создании функции, которая могла бы получить доступ к базе данных Django без запуска сервера. В основном это использовалось для вставки записей тестовых данных.

В моем project/apps/app_one/functions.pyфайле было следующее :

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Project.settings")
import django
django.setup()

Это позволяет получить доступ к базе данных Django через скрипты Python без запуска сервера. Смотрите здесь для получения дополнительной информации об этом подходе: https://stackoverflow.com/a/26875729/4573162

В этом файле я также держал основные функции приложения, которые не требовали доступа к базе данных и должны были использоваться во время работы сервера. Например, у меня app_one.models.pyможет быть следующее использование functions.arg_formatфункции, импортированной из app_name/functions.pyфайла:

def save(self, *args, **kwargs):
    self.some_arg = functions.arg_format(self.some_arg)
    super().save(*args, **kwargs)

Это означает, что мое приложение во время работы пыталось снова запустить Django setup().

Я не знаю, как это связано, но выдает ту же RuntimeError: populate() isn't reentrantошибку, пока я не создал отдельный файл для всех функций доступа к базе данных. После того, как дополнительный setup()импорт был обойден, миграцию удалось завершить, как и ожидалось.

Автор: theeastcoastwest Размещён: 17.10.2018 05:00

-4 плюса

Это может привести к нехватке памяти на вашем ПК / хосте / VPS, свободной памяти и все будет хорошо.

Автор: Dmitry Krupin Размещён: 21.09.2015 04:16
Вопросы из категории :
32x32