আমি ডাব্লুএসজিআইয়ের সাথে অ্যাপাচি সার্ভারে স্থাপন করা একটি জ্যাঙ্গো ওয়েব অ্যাপ্লিকেশন বিকাশ করছি এবং সবকিছু সুচারুভাবে চলছে। আজ, আমি admin.py
বিল্ড-ইন জাঙ্গো অ্যাডমিন ইন্টারফেসটি কাস্টমাইজ করার প্রয়াসে আমার অ্যাপ্লিকেশনটিতে কিছুটা ছোটখাটো পরিবর্তন করেছি এবং প্রাথমিকভাবে একটি সিনট্যাক্স ত্রুটি করেছি (একটি অনাবৃত বন্ধনী)। এর অর্থ হ'ল আমি যখন wsgi.py
কোডটি স্পর্শ করেছি এবং লোড করেছি (আমার ভার্চুয়াল হোস্টে ডাবন মোডে ডাব্লুএসজিআই চলছে) তখন আমার ওয়েবসাইটটি একটি অভ্যন্তরীণ সার্ভার ত্রুটির সাথে প্রতিস্থাপন করা হয়েছিল কারণ ডাব্লুএসজিআই যখন সিনট্যাক্স ত্রুটিতে আঘাত করেছিল তখন বন্ধ হয়েছিল stopped
সুতরাং আমি সিনট্যাক্স ত্রুটিটি স্থির করেছিলাম, আমার সাথে আরও কিছু নেই তা যাচাই করেছিলাম manage.py check
এবং wsgi.py
পুনরায় চালনার জন্য স্পর্শ করেছি । তবে আমার ওয়েবসাইটটি এখনও একটি অভ্যন্তরীণ সার্ভার ত্রুটি প্রদর্শন করে! অ্যাপাচি লগগুলি চেক করা, এটি আমি দেখতে পাই:
[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
ত্রুটির প্রথম সিরিজটি দেখায় যে আমার মধ্যে সিনট্যাক্স ত্রুটির কারণে ডাব্লুএসজিআই ব্যর্থ হয়েছে admin.py
। তবে তৃতীয় সিরিজের ত্রুটিটি জ্যাঙ্গোর অভ্যন্তরীণ ত্রুটি দেখায় বলে মনে হচ্ছে:
RuntimeError: populate() isn't reentrant
populate
পদ্ধতি থেকে নিক্ষিপ্ত registry.py
।
এই ত্রুটি বার্তাকে গুগল করা আশ্চর্যজনকভাবে খুব কম তথ্য দেয়, এটি জ্যাঙ্গোর ডকুমেন্টেশন থেকে কোনওটিই নয়। স্পষ্টতই, আপনি আপনার অ্যাপ্লিকেশনটিতে দুবার কোনও অ্যাপ্লিকেশন নাম রাখলে এটি কখনও কখনও ঘটতে পারে settings.py
তবে আমি তা করি না। আরও গুরুত্বপূর্ণ settings.py
বিষয় হল যে ওয়েবসাইটটি ঠিকঠাক কাজ করছিল সেই জায়গা থেকে আমি পরিবর্তন করিনি - আমি কেবল পরিবর্তন করেছি admin.py
।
আমি আমার করা সমস্ত পরিবর্তনগুলি ফিরিয়ে দেওয়ার চেষ্টা করেছি, সুতরাং ওয়েবসাইটটি কাজ করার সময় আমার সমস্ত পাইথন কোডটি সেই অবস্থায় ফিরে এসেছিল - এবং populate() isn't reentrant
ডাব্লুএসজিআই কোডটি পুনরায় লোড করার চেষ্টা করার পরে আমি ত্রুটিটি পেয়েছি!
আমি এর settings.py
ইনস্টলডিডিএপিপিএস বিভাগে বিভিন্ন অ্যাপ্লিকেশন মন্তব্য করার চেষ্টা করেছি এবং শুধুমাত্র 'জ্যাঙ্গো.কন্ট্রিবি.স্ট্যাটিক ফাইলস' সক্ষম করে ত্রুটিটি এখনও ঘটে। আশ্চর্যের সাথে, আমি সমস্ত অ্যাপ্লিকেশনগুলিতে মন্তব্য করেও তবুও ত্রুটিটি পেয়েছি - জ্যাঙ্গো কোনও অ্যাপ্লিকেশন লোড না করেও ত্রুটিটি ছুড়ে ফেলে!
কেউ কি জানেন যে এখানে কী চলছে? বা আমার জন্য এই ত্রুটিটি ডিবাগ করার আরও ভাল কোনও উপায়, যেহেতু অ্যাপাচি লগের ট্রেসব্যাকটি বেশ অসহনীয়?
দ্রষ্টব্য: আমি জ্যাঙ্গো 1.7, অ্যাপাচি 2.2 এবং পাইথন 2.7 ব্যবহার করছি।
wsgi.py
একই অ্যাপাচি ত্রুটিতে ফলাফল স্পর্শ করার ফলে এবং .pyc ফাইলগুলি পুনরায় তৈরি করা হয় না।