لماذا جيفنت على التطبيق قارورة مع أباتشي + مود_وسجي يثير نوتيمبليمنتيدرور?

StackOverflow https://stackoverflow.com//questions/9692089

سؤال

أواجه مشكلة نشر بلدي قارورة التطبيق مع أباتشي (مود_وسجي) و جيفنت على استضافة مشتركة (ويباكتيون).

التطبيق يعمل بشكل جيد في خادم التنمية التي تقدمها قارورة ، ولكن عندما كنت حاول نشره أحصل على الخطأ التالي في ملف السجل:

[Tue Mar 13 15:48:24 2012] [error] Traceback (most recent call last):
[Tue Mar 13 15:48:24 2012] [error]   File "evdns.pxi", line 78, in gevent.core.__evdns_callback (gevent/core.c:6300)
[Tue Mar 13 15:48:24 2012] [error]   File "/home/username/.virtualenvs/staging/lib/python2.7/site-packages/gevent/hub.py", line 297, in switch_args
[Tue Mar 13 15:48:24 2012] [error]   File "/home/username/.virtualenvs/staging/lib/python2.7/site-packages/gevent/hub.py", line 290, in switch
[Tue Mar 13 15:48:24 2012] [error]   File "/home/username/.virtualenvs/staging/lib/python2.7/site-packages/gevent/hub.py", line 135, in get_hub
[Tue Mar 13 15:48:24 2012] [error] NotImplementedError: gevent is only usable from a single thread

أحتاج جيفنت لأنني باستخدام وحدة مزامنة طلبات بايثون إلى تقديم طلبات هتب المتزامنة.حاولت أن جوجل حولها ولكن النصيحة الوحيدة التي وجدت هي للاتصال

from gevent import monkey
monkey.patch_all()

شيء أفعله بالفعل في الكود الخاص بي.

قيمة WSGIDaemonProcess هو:

WSGIDaemonProcess myapp processes=5 python-path=/home/myusername/webapps/myapp/lib/python2.7 threads=1

هنا هو هتبد بلدي.أسيوط: http://pastebin.com/eWygicJH

أي شخص لديه أي نصيحة لحل هذه المشكلة?

هل كانت مفيدة؟

المحلول

يبدو أنني وجدت الحل بنفسي.التوجيه التالي حل مشكلاتي:

giveacodicetagpre.

الفكرة تأتي من آخر الإجابة حيث يقترح تعيين WSGiaPplicationGroup إلى Global لحل مشكلة مع عملية WSGIالتي تستمر في الانهيار. من وثائق WSGI :

لإجبار تطبيق WSGI معين يتم تشغيله خلال الأول مفسر بايثون الفرعي الذي تم إنشاؤه عندما يتم تهيئة بيثون، يجب استخدام توجيه WSGIAPPlicationGroup ومجموعة المجموعة '٪ {global}'.

لا يمكن أن يفهم تماما سبب حل هذا التوجيه مشكلتي ولكنه يفعل ذلك.سأكون أكثر من سعيد إذا كان شخص ما قادرا على شرح هذا لي في اللغة الإنجليزية العادية؛ -)

نصائح أخرى

حاول استبدال monkey.patch_all() مع monkey.patch_all(thread=False).إذا كان حقا وحدة خيوط التي تسبب المتاعب عندما مصححة ، وهذا يجب حلها. request لا تستخدم خيوط.

قمت بنشر إجابة أدناه على https://serverfault.com/a/869625/355861

Apache mod_wsgi غير متوافق حاليا مع GEVENT.بالنسبة إلى الفاصوليا مرنة AWS مع Apache، استخدمت ASYNC_MODE="الخيوط" للقارورة ويعمل بشكل جيد.ملاحظة، الخيوط لديها أداء أقل من gevent. https:/flask-socketio.readtheedocs.io/a/a/ a>

giveacodicetagpre.

لاحظ أن القارورة يمكن أن تدير مستقلة مع GEVENT.

giveacodicetagpre.

ومع ذلك، فأنت تريد حقا خادم HTTP أمامه مثل Gunicorn.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top