Supervisor: خطأ Python عند تشغيل المشرف ctl

تم إنشاؤها على ٢٠ فبراير ٢٠١٤  ·  29تعليقات  ·  مصدر: Supervisor/supervisor

لقد قمت للتو بتثبيت النقطة ولكن عندما أحاول تشغيلها ، أتلقى الخطأ الغريب أدناه. أي أفكار ماذا يمكن أن يحدث؟ هل هذه حقيب؟

sudo Supervisorctl
خطأ:، [Errno 97] عائلة العنوان غير مدعومة من قبل البروتوكول: ملف: /usr/lib64/python2.6/socket.py سطر: 567

supervisorctl

التعليق الأكثر فائدة

واجهت هذه المشكلة مع خطأ مشابه ، عند التشغيل في حاوية Docker:

# supervisorctl 
error: <class 'socket.error'>, [Errno 99] Cannot assign requested address: file: /usr/lib/python2.7/socket.py line: 575

لم تكن المشكلة في حالتي فقدان supervisord.conf في الدليل الحالي ، و -c supervisord.conf لم يساعد. كانت المشكلة أن supervisord.conf في الدليل الحالي كان ضعيفًا جدًا ، ويفقد الأشياء التي يحتاجها supervisorctl . هذا ما كان عليّ إضافته:

[unix_http_server]
file=/var/run/supervisor.sock
chmod=0700

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock

ال 29 كومينتر

ماذا يوجد في supervisord.conf ؟ عادة /etc/supervisor/supervisord.conf .

سأغلق هذا بسبب نقص النشاط. إذا كنت لا تزال تواجه هذه المشكلة ويمكنك تقديم المزيد من المعلومات ، فيمكننا إعادة الفتح.

أحصل على نفس الخطأ بالضبط على مشرف تم تثبيته حديثًا مع ملف التكوين الافتراضي كإخراج بواسطة echo_supervisord_conf. لقد قمت بتثبيت ملف التكوين محليًا ، وأقوم بتشغيله كمستخدم عادي وليس كمستخدم جذر:

$ supervisorctl
error: <class 'socket.error'>, [Errno 97] Address family not supported by protocol: file: /usr/lib/python2.7/socket.py line: 571
supervisor>

bbirand إذا قمت بتنفيذ supervisorctl -c /explicit/path/to/config/file/echoed/out/supervisord.conf ، فهل تحصل على نفس الخطأ؟ إذا كان الأمر كذلك ، هل يمكنك تضمين محتويات هذا الملف في تعليق منفصل؟

نعم ، هذا أصلحها. لم أكن أدرك أنني اضطررت إلى تمرير ملف التكوين إلى المشرف على مكالمة ctl أيضًا ، ولكن بالطبع كان ذلك منطقيًا .. آسف للإنذار الخاطئ.

(على الرغم من أن ظهور رسالة خطأ وصفية أكثر بدلاً من فشل اتصال المقبس سيكون أكثر فائدة. ليس لدي حتى ملف /etc/supervisor.conf ، لذلك كنت أتخيل أن supervisorctl سيفشل مع " لم يتم العثور على ملف التكوين "خطأ أو شيء من هذا القبيل.)

يجب إرسال خطأ "غير موجود" محدد إذا لم يتمكن المشرف من العثور على ملف تكوين. في الإصدارات الأحدث ، هناك أيضًا خطأ مختلف "غير قابل للقراءة" إذا وجد المشرف واحدًا ولكن لا يمكنه قراءته. عندما لا يتم استخدام -c لتحديد مسار واضح لملف التكوين ، سيبحث المشرف واحد .

سيبحث المشرف أيضًا عن ملف التكوين. قبل المشرف 3.0b2 ، كان ملف التكوين مطلوبًا دائمًا وسيعطي خطأ كما هو موضح أعلاه. في الإصدار 3.0b2 والإصدارات الأحدث ، يمكن استخدام supervisorctl بدون ملف تكوين. في هذه الحالة ، يجب تقديم معلومات الاتصال في خيارات سطر الأوامر. أعتقد أنه إذا لم يتمكن من العثور على ملف تكوين ، ولم تعط خيارات الاتصال ، فسيتم تعيينه افتراضيًا على http: // localhost : 9001 بدون مصادقة. لست متأكدا من ذلك.

يبدو أن supervisorctl يبحث عن ملف تهيئة آخر على نظامك ويعثر عليه ، ولكن هذا الملف يحتوي على سطر يتسبب في حدوث الخطأ Address family not supported by protocol . يمكن أن يكون هذا المشرف يستخدمه الافتراضي ولكن الافتراضي يتسبب في حدوث هذا الخطأ على نظامك. سيكون من المفيد لو تمكنا من الحصول على مزيد من المعلومات. آخر مرة تم الإبلاغ عن ذلك لم نكتشف ذلك.

_تعديل: توضيح سلوك المشرف.

مثير للإعجاب. ما كان يحدث معي هو أنه كان هناك ملف supervisor.conf في الدليل الحالي (الدليل الافتراضي). عندما أقوم بتشغيل الأمر كـ supervisorctl حصلت على الخطأ ، ولكن عندما قمت بالتبديل إلى استخدام supervisorctl -c supervisor.conf ، لن أحصل على الخطأ بعد الآن. يجب أن أشير أيضًا إلى أن هذا من مشرف مثبت في Virtualenv.

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

يبدو أن الالتزام في # 95 أدخل سلوكًا غير صحيح (على وجه الخصوص ، هذا الالتزام: https://github.com/JensRantil/supervisor/commit/3385f17a9c465359be3f504c611700ff60bea0d4). لقد كان هناك منذ نهاية عام 2011 ، وعكس ترتيب البحث بحيث يتم العثور على $CWD/etc/supervisord.conf قبل $CWD/supervisord.conf .

سأحاول إصلاح هذا في كل من الفرع 3.1.X والماجستير.

عفوًا ، لا ، هذا ارتكاب بلا لوم. لقد لامس فقط الخطوط التي كانت جزءًا من خطأ موجود مسبقًا ، أو على الأقل خلاف بين المستندات والرمز.

رائعة! لكن FWIW ، بالتأكيد لم يكن لدي ملف $CWD/etc/supervisor.conf . لذلك لست متأكدًا مما إذا كان هذا الخطأ يفسر التناقض الذي لاحظته عند استخدام مفتاح التبديل -c .

لست متأكدًا مما إذا كانت هناك مشكلة أفضل للإبلاغ عنها ، ولكن يبدو أنها ذات صلة:

إذا كان لديّ supervisord.conf في الدليل الحالي ، لكن لا يحتوي على قسم supervisorctl ، فمن المستحيل تشغيل supervisorctl مع معلمات سطر الأوامر:

$ supervisorctl -s "http://192.168.1.1:9001" -i
Error: .ini file does not include supervisorctl section
For help, use /usr/local/bin/supervisorctl -h

تشغيل نفس الأمر في دليل مختلف يعمل بشكل جيد.

أقترح إما السماح لوسائط سطر الأوامر الصريحة بتجاوز ملف التكوين المكتشف ضمنيًا ، أو إبلاغ المستخدم بأنه تم تجاهلها.

الإصدار 3.1.3

لدي نفس المشكلة في centos ، في بلدي conf لقد أضفت قسمًا [supervisord] بالإضافة إلى برنامج conf الخاص بي.

$ easy_install supervisor
$ supervisord -v
3.2.1
$ supervisord -c /etc/supervisord.conf
$ supervisorctl restart program:secor -c /etc/supervisord.conf
Error: .ini file does not include supervisorctl section
For help, use /bin/supervisorctl -h

لقد أصلحت المشكلة عن طريق ربط echo_supervisord_conf بملف التكوين الخاص بي.

عادةً ما أقوم بتسمية ملف التكوين الفرعي كـ supervisord.conf في المشروع. عند تنفيذ supervisorctl في مجلد المشروع هذا ، فإنه يعتبر أن supervisord.conf هو ملف التكوين الرئيسي ، مما يتسبب في حدوث هذا الخطأ أيضًا.

مرحبًا ، لقد استخدمت المشرف على جهاز Mac لكتابة ملف التكوين لتنفيذ الأمر
supervisord - c/Users/wujunze/etc/supervisor. The conf
ثم أبلغ تنفيذ supervisorctl عن هذا الخطأ:
http://localhost:9001 refused the connection The supervisor > update Error: < class 'socket. The error >, [61] Errno Connection refused: file: / System/Library/Frameworks/Python framework Versions / 2.7 / lib/python2.7 / socket. Py line: 575

ولدي أيضا نفس المشكلة

sudo supervisorctl -c /etc/supervisor/supervisord.conf
error: <class 'socket.error'>, [Errno 99] Cannot assign requested address: file: /usr/lib/python2.7/socket.py line: 575
supervisor>

أنا أيضا.
هل هناك حل؟

عمل لي sudo service supervisor start . لم يكن البرنامج الخفي يعمل

بالنسبة لي كان الحل هو أن البرنامج الخفي لم يكن قيد التشغيل
sudo systemctl status supervisord
sudo systemctl enable supervisord
sudo systemctl start supervisord

جاهز
sudo supervisorctl reread
sudo supervisorctl start process:*

واجهت هذه المشكلة مع خطأ مشابه ، عند التشغيل في حاوية Docker:

# supervisorctl 
error: <class 'socket.error'>, [Errno 99] Cannot assign requested address: file: /usr/lib/python2.7/socket.py line: 575

لم تكن المشكلة في حالتي فقدان supervisord.conf في الدليل الحالي ، و -c supervisord.conf لم يساعد. كانت المشكلة أن supervisord.conf في الدليل الحالي كان ضعيفًا جدًا ، ويفقد الأشياء التي يحتاجها supervisorctl . هذا ما كان عليّ إضافته:

[unix_http_server]
file=/var/run/supervisor.sock
chmod=0700

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock

عامل ميناء: خطأ:، [Errno 99] لا يمكن تعيين العنوان المطلوب: file: /usr/lib64/python2.7/socket.py line: 571

عامل ميناء:
خطأ:، [Errno 2] لا يوجد مثل هذا الملف أو الدليل: file: /usr/lib/python2.7/socket.py line: 228
أعاد الأمر '/ bin / sh -c supervisorctl update' رمزًا غير صفري: 2

فقط قم بإنشاء التكوين الافتراضي

المفتاح هنا هو https://github.com/Supervisor/supervisor/issues/376#issuecomment -404385767. إذا كنت تقوم بإعداد ملف تكوين المشرف يدويًا ولم تقم بتضمين مكونات الخادم ، فلا يمكنك الاتصال به عبر المشرف ctl.

أملك
لقد واجهت نفس المشكلة ، ولكن سيناريو الاستخدام هو أن البيئة الافتراضية للأناكوندا ، بعد بدء المستخدم غير الجذر ، تفشل عملية إعادة التحميل اللاحقة من خلال المستخدم غير الجذر.

الخطأ كالتالي:
خطأ:، [Errno 2] لا يوجد مثل هذا الملف أو الدليل: file: /usr/work/tool/anaconda3/envs/python27/lib/python2.7/socket.py line: 228

هل يتطلب المشرف بدء تشغيل مستخدم متميز؟

واجهت هذه المشكلة مع خطأ مشابه ، عند التشغيل في حاوية Docker:

# supervisorctl 
error: <class 'socket.error'>, [Errno 99] Cannot assign requested address: file: /usr/lib/python2.7/socket.py line: 575

لم تكن المشكلة في حالتي فقدان supervisord.conf في الدليل الحالي ، و -c supervisord.conf لم يساعد. كانت المشكلة أن supervisord.conf في الدليل الحالي كان ضعيفًا جدًا ، ويفقد الأشياء التي يحتاجها supervisorctl . هذا ما كان عليّ إضافته:

[unix_http_server]
file=/var/run/supervisor.sock
chmod=0700

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock

علامة ~

لقد جربت الاقتراحات أعلاه ، وأحصل على unix:///var/run/supervisor.sock no such file عند تكوين ملف supervisord.conf كما هو مقترح. أنا داخل حاوية Docker تعمل بنظام التشغيل Ubuntu 20.04

مواجهة python file not found an error, code=exited, status=2 بمجرد أن أحاول استخدام المستند الرسمي ولكن لا يزال كما هو.
لقد جربت العديد من الحلول لتطبيق Laravel الخاص بي.

لكن في النهاية ، حاولت مع الحل الخاص بي.

هذا مثال على الكود:

[program:dev-worker]
process_name=%(program_name)s_%(process_num)02d
command=cd /var/www/html/example.com && php artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=ubuntu
numprocs=8
redirect_stderr=true
stdout_logfile=/var/www/html/example.com/storage/logs/laravel.log
stopwaitsecs=3600

المرجع: https://laravel.com/docs/7.x/queues#supervisor -configuration

https://stackoverflow.com/questions/41286526/supervisor-no-such-file-socket-py/65791261#65791261

يؤدي الاقتراح المقدم من

يعمل خادم CRIT 'unix_http_server' دون أي فحص لمصادقة HTTP

كما تمت مناقشته في التذكرة رقم 717 ، يمكن تجنب ذلك عن طريق تأمين التكوين. على سبيل المثال:

[unix_http_server]
file=/var/run/supervisor.sock
chmod=0700
username = dummy
password = impossibleToGuess

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock
username = dummy
password = impossibleToGuess
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

YxAc picture YxAc  ·  4تعليقات

crybat picture crybat  ·  5تعليقات

felipejfc picture felipejfc  ·  5تعليقات

vBlackOut picture vBlackOut  ·  5تعليقات

alexmnv picture alexmnv  ·  3تعليقات