Supervisor: Kesalahan Python saat menjalankan supervisorctl

Dibuat pada 20 Feb 2014  ·  29Komentar  ·  Sumber: Supervisor/supervisor

Saya baru saja menginstal dengan pip tetapi ketika saya mencoba menjalankannya, saya mendapatkan kesalahan aneh di bawah ini. Ada ide apa yang bisa terjadi? Apakah itu bug?

$ sudo supervisorctl
kesalahan:, [Errno 97] Keluarga alamat tidak didukung oleh protokol: file: /usr/lib64/python2.6/socket.py baris: 567

supervisorctl

Komentar yang paling membantu

Saya menemukan masalah ini dengan kesalahan serupa, saat menjalankan dalam wadah Docker:

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

Masalah dalam kasus saya bukanlah supervisord.conf hilang di direktori saat ini, dan -c supervisord.conf tidak membantu. Masalahnya adalah supervisord.conf di direktori saat ini terlalu tipis, dan kehilangan hal-hal yang dibutuhkan supervisorctl . Inilah yang harus saya tambahkan:

[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

Semua 29 komentar

Apa yang ada di supervisord.conf ? Biasanya /etc/supervisor/supervisord.conf .

Saya akan menutup ini karena kurangnya aktivitas. Jika Anda masih mengalami masalah ini dan dapat memberikan informasi lebih lanjut, kami dapat membuka kembali.

Saya mendapatkan kesalahan yang sama persis pada supervisor yang baru diinstal dengan file konfigurasi default sebagai output oleh echo_supervisord_conf. Saya menginstal file konfigurasi secara lokal, dan menjalankannya sebagai pengguna biasa dan bukan root:

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

@bbirand jika Anda menjalankan supervisorctl -c /explicit/path/to/config/file/echoed/out/supervisord.conf apakah Anda mendapatkan kesalahan yang sama? Jika demikian, dapatkah Anda memasukkan konten file itu dalam komentar terpisah?

Yup, itu memperbaikinya. Saya tidak menyadari bahwa saya harus meneruskan file konfigurasi ke panggilan supervisorctl juga, tetapi tentu saja masuk akal.. Maaf untuk alarm yang salah.

(Meskipun pesan kesalahan yang lebih deskriptif daripada koneksi soket yang gagal akan lebih membantu. Saya bahkan tidak memiliki file /etc/supervisor.conf , jadi saya akan membayangkan supervisorctl akan gagal dengan " File konfigurasi tidak ditemukan" kesalahan atau sesuatu.)

Kesalahan "tidak ditemukan" tertentu harus dikeluarkan jika supervisord tidak dapat menemukan file konfigurasi. Di versi yang lebih baru, ada juga kesalahan "tidak dapat dibaca" yang berbeda jika supervisord menemukannya tetapi tidak dapat membacanya. Ketika -c tidak digunakan untuk menentukan jalur eksplisit ke file konfigurasi, supervisord akan mencarinya .

supervisorctl juga akan mencari file konfigurasi. Sebelum Supervisor 3.0b2, file konfigurasi selalu diperlukan dan akan memberikan kesalahan seperti dijelaskan di atas. Di 3.0b2 dan yang lebih baru, supervisorctl dapat digunakan tanpa file konfigurasi. Dalam hal ini, info koneksi harus diberikan dalam opsi baris perintah. Saya pikir jika tidak dapat menemukan file konfigurasi, dan Anda tidak memberikan opsi koneksi, defaultnya adalah http://localhost :9001 tanpa auth. Saya tidak yakin tentang itu.

Kedengarannya seperti supervisorctl sedang mencari dan menemukan file konfigurasi lain di sistem Anda, tetapi file itu berisi baris yang menyebabkan kesalahan Address family not supported by protocol . Bisa juga supervisorctl menggunakan defaultnya tetapi default menyebabkan kesalahan ini pada sistem Anda. Akan sangat membantu jika kita bisa mendapatkan info lebih lanjut. Terakhir kali ini dilaporkan, kami tidak mengetahuinya.

_Edit: Perilaku supervisorctl yang diklarifikasi._

Menarik. Apa yang terjadi dengan saya adalah bahwa ada file supervisor.conf di direktori saat ini (yang default). Ketika saya menjalankan perintah sebagai supervisorctl saya mendapatkan kesalahan, tetapi ketika saya beralih menggunakan supervisorctl -c supervisor.conf , saya tidak akan mendapatkan kesalahan lagi. Saya juga harus mencatat bahwa ini dari supervisor yang diinstal di virtualenv.

Dari apa yang saya pahami dari deskripsi Anda, jika file konfigurasi ditemukan di direktori saat ini, itu harus digunakan, dan perilakunya harus sama dengan menjalankannya secara eksplisit dengan sakelar -c . Itu entah bagaimana bukan apa yang terjadi di pihak saya.

Tampaknya komit di # 95 memperkenalkan perilaku yang salah (khususnya, komit ini: https://github.com/JensRantil/supervisor/commit/3385f17a9c465359be3f504c611700ff60bea0d4). Itu sudah ada sejak akhir 2011, dan membalikkan urutan pencarian sehingga $CWD/etc/supervisord.conf akan ditemukan sebelum $CWD/supervisord.conf .

Saya akan mencoba memperbaikinya di cabang 3.1.X dan master.

Ups, tidak, komit itu tidak bercacat. Itu hanya menyentuh baris yang merupakan bagian dari bug yang sudah ada sebelumnya, atau setidaknya ketidaksepakatan antara dokumen dan kode.

Besar! Tapi FWIW, saya pasti tidak punya file $CWD/etc/supervisor.conf . Jadi saya tidak yakin apakah bug ini menjelaskan perbedaan yang saya amati saat menggunakan sakelar -c .

Tidak yakin apakah ada masalah yang lebih baik untuk melaporkan ini, tetapi tampaknya terkait:

Jika saya memiliki supervisord.conf di direktori saat ini, tetapi tidak memiliki bagian supervisorctl, maka tidak mungkin menjalankan supervisorctl dengan parameter baris perintah:

$ 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

Menjalankan perintah yang sama di direktori yang berbeda berfungsi dengan baik.

Saya menyarankan untuk mengizinkan argumen baris perintah eksplisit untuk menimpa file konfigurasi yang terdeteksi secara implisit, atau memberi tahu pengguna bahwa mereka diabaikan.

versi 3.1.3

Saya memiliki masalah yang sama pada centos, di conf saya, saya telah menambahkan bagian [supervisord] selain conf program saya.

$ 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

Saya memperbaiki masalah dengan menggabungkan echo_supervisord_conf ke file konfigurasi saya.

Saya biasanya menamai file sub config sebagai supervisord.conf dalam proyek. Ketika Anda menjalankan supervisorctl di folder proyek itu, itu akan menganggap bahwa supervisord.conf adalah file konfigurasi utama, yang juga menyebabkan kesalahan ini.

Hai, saya menggunakan supervisor di Mac untuk menulis file konfigurasi untuk menjalankan perintah
supervisord - c/Users/wujunze/etc/supervisor. The conf
Kemudian jalankan supervisorctl melaporkan kesalahan ini:
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

Saya juga memiliki masalah yang sama

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>

saya juga.
Apakah ada solusi?

sudo service supervisor start bekerja untuk saya. Daemon tidak berjalan

bagi saya solusinya adalah, daemon tidak berjalan
sudo systemctl status supervisord
sudo systemctl enable supervisord
sudo systemctl start supervisord

siap
sudo supervisorctl reread
sudo supervisorctl start process:*

Saya menemukan masalah ini dengan kesalahan serupa, saat menjalankan dalam wadah Docker:

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

Masalah dalam kasus saya bukanlah supervisord.conf hilang di direktori saat ini, dan -c supervisord.conf tidak membantu. Masalahnya adalah supervisord.conf di direktori saat ini terlalu tipis, dan kehilangan hal-hal yang dibutuhkan supervisorctl . Inilah yang harus saya tambahkan:

[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

buruh pelabuhan : kesalahan:, [Errno 99] Tidak dapat menetapkan alamat yang diminta: file: /usr/lib64/python2.7/socket.py baris: 571

Buruh pelabuhan:
kesalahan:, [Errno 2] Tidak ada file atau direktori seperti itu: file: /usr/lib/python2.7/socket.py baris: 228
Perintah '/bin/sh -c supervisorctl update' mengembalikan kode bukan nol: 2

Cukup buat konfigurasi default

Kuncinya di sini adalah https://github.com/Supervisor/supervisor/issues/376#issuecomment -404385767. Jika Anda menyiapkan file konfigurasi supervisord secara manual dan tidak menyertakan komponen server, Anda tidak dapat menghubungkannya melalui supervisorctl.

saya sudah
Saya mengalami masalah yang sama, tetapi skenario penggunaannya adalah bahwa lingkungan virtual anaconda, setelah pengguna non-root dimulai, pemuatan ulang berikutnya gagal melalui pengguna non-root.

Kesalahannya adalah sebagai berikut:
kesalahan:, [Errno 2] Tidak ada file atau direktori seperti itu: file: /usr/work/tool/anaconda3/envs/python27/lib/python2.7/socket.py baris: 228

Apakah supervisor memerlukan startup pengguna yang memiliki hak istimewa?

Saya menemukan masalah ini dengan kesalahan serupa, saat menjalankan dalam wadah Docker:

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

Masalah dalam kasus saya bukanlah supervisord.conf hilang di direktori saat ini, dan -c supervisord.conf tidak membantu. Masalahnya adalah supervisord.conf di direktori saat ini terlalu tipis, dan kehilangan hal-hal yang dibutuhkan supervisorctl . Inilah yang harus saya tambahkan:

[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

tandai~

Saya sudah mencoba saran di atas, dan saya mendapatkan unix:///var/run/supervisor.sock no such file saat mengonfigurasi file supervisord.conf seperti yang disarankan. Saya di dalam wadah Docker yang menjalankan Ubuntu 20.04

Menghadapi python file not found an error, code=exited, status=2 setelah saya mencoba dengan dokumen resmi tetapi masih sama.
Saya telah mencoba begitu banyak solusi untuk aplikasi laravel saya.

Tetapi akhirnya, saya telah mencoba dengan solusi saya.

Berikut ini contoh untuk kodenya:

[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

Ref: https://laravel.com/docs/7.x/queues#supervisor -configuration

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

Saran dari @javabrett sayangnya menyebabkan kesalahan seperti berikut untuk dicatat di setiap startup:

CRIT Server 'unix_http_server' berjalan tanpa pemeriksaan otentikasi HTTP

Seperti yang dibahas dalam tiket #717, hal ini dapat dihindari dengan mengamankan konfigurasi. Sebagai contoh:

[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
Apakah halaman ini membantu?
0 / 5 - 0 peringkat