Supervisor: Erreur Python lors de l'exécution de superviseurctl

Créé le 20 févr. 2014  ·  29Commentaires  ·  Source: Supervisor/supervisor

Je viens d'installer avec pip mais lorsque j'essaie de l'exécuter, j'obtiens l'erreur étrange ci-dessous. Des idées de ce qui pourrait se passer ? Est-ce un bug ?

$ sudo superviseurctl
Erreur:, [Errno 97] Famille d'adresses non prise en charge par le protocole : fichier : /usr/lib64/python2.6/socket.py ligne : 567

supervisorctl

Commentaire le plus utile

J'ai rencontré ce problème avec une erreur similaire lors de l'exécution dans un conteneur Docker :

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

Le problème dans mon cas n'était pas un supervisord.conf manquant dans le répertoire actuel, et -c supervisord.conf n'a pas aidé. Le problème était que le supervisord.conf dans le répertoire actuel était tout simplement trop fin et qu'il manquait des éléments dont supervisorctl besoin. Voici ce que je devais ajouter :

[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

Tous les 29 commentaires

Qu'y a-t-il dans votre supervisord.conf ? Habituellement /etc/supervisor/supervisord.conf .

Je vais fermer ceci en raison du manque d'activité. Si vous rencontrez toujours ce problème et pouvez fournir plus d'informations, nous pouvons rouvrir.

J'obtiens exactement la même erreur sur un superviseur fraîchement installé avec le fichier de configuration par défaut en sortie de echo_supervisord_conf. J'ai installé le fichier de configuration localement et je l'exécute en tant qu'utilisateur normal et non 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 si vous exécutez superviseurctl -c /explicit/path/to/config/file/echoed/out/supervisord.conf obtenez-vous la même erreur ? Si oui, pouvez-vous inclure le contenu de ce fichier dans un commentaire séparé ?

Ouais, ça l'a réparé. Je ne savais pas que je devais également transmettre le fichier de configuration à l'appel superviseurctl, mais bien sûr, cela a du sens. Désolé pour la mauvaise alarme.

(Bien qu'un message d'erreur plus descriptif au lieu de l'échec de la connexion socket serait plus utile. Je n'ai même pas /etc/supervisor.conf fichier supervisorctl aurait échoué avec un " Fichier de configuration introuvable" erreur ou quelque chose.)

Une erreur spécifique "not found" doit être émise si superviseurd ne trouve pas de fichier de configuration. Dans les versions ultérieures, il existe également une erreur "non lisible" différente si Supervisord en trouve une mais ne peut pas la lire. Lorsque -c n'est pas utilisé pour spécifier un chemin explicite vers un fichier de configuration, Supervisord en recherchera un .

superviseurctl recherchera également un fichier de configuration. Avant Supervisor 3.0b2, un fichier de configuration était toujours requis et il renvoyait une erreur comme décrit ci-dessus. Dans 3.0b2 et versions ultérieures, superviseurctl peut être utilisé sans fichier de configuration. Dans ce cas, les informations de connexion doivent être fournies dans les options de la ligne de commande. Je pense que s'il ne trouve pas de fichier de configuration et que vous ne donnez pas les options de connexion, il est par défaut sur http://localhost :9001 sans auth. Je n'en suis pas sûr.

Il semble que superviseurctl recherche et trouve un autre fichier de configuration sur votre système, mais ce fichier contient une ligne qui provoque l'erreur Address family not supported by protocol . Il se peut également que superviseurctl utilise sa valeur par défaut, mais la valeur par défaut provoque cette erreur sur votre système. Ce serait utile si nous pouvions obtenir plus d'informations. La dernière fois que cela a été signalé, nous n'avons rien su.

_Edit : Comportement du superviseur clarifié._

Intéressant. Ce qui se passait avec moi, c'est qu'il y avait un fichier supervisor.conf dans le répertoire actuel (le par défaut). Lorsque j'exécute la commande en tant que supervisorctl j'ai l'erreur, mais lorsque je suis passé à l'utilisation de supervisorctl -c supervisor.conf , je n'aurais plus l'erreur. Je dois également noter qu'il s'agit d'un superviseur installé dans un virtualenv.

D'après ce que je comprends de votre description, si un fichier de configuration est trouvé dans le répertoire actuel, il doit être utilisé et le comportement doit être le même que celui de l'exécuter explicitement avec le commutateur -c . Ce n'est en quelque sorte pas ce qui se passe de mon côté.

Il semble qu'un commit dans #95 ait introduit un comportement incorrect (en particulier, ce commit : https://github.com/JensRantil/supervisor/commit/3385f17a9c465359be3f504c611700ff60bea0d4). Il est là depuis fin 2011 et inverse l'ordre de recherche de sorte que $CWD/etc/supervisord.conf sera trouvé avant $CWD/supervisord.conf .

Je vais essayer de résoudre ce problème à la fois dans la branche 3.1.X et dans le maître.

Oups, non, ce commit est irréprochable. Cela touchait juste des lignes qui faisaient partie d'un bogue préexistant, ou du moins d'un désaccord entre la doc et le code.

Super! Mais FWIW, je n'avais définitivement pas $CWD/etc/supervisor.conf fichier -c .

Je ne sais pas s'il existe un meilleur problème pour le signaler, mais cela semble lié :

Si j'ai un superviseur.conf dans le répertoire actuel, mais qu'il n'a pas de section superviseurctl, alors il est impossible d'exécuter superviseurctl avec des paramètres de ligne de commande :

$ 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

L'exécution de la même commande dans un répertoire différent fonctionne très bien.

Je suggérerais soit d'autoriser les arguments de ligne de commande explicites à remplacer le fichier de configuration détecté implicitement, soit d'informer l'utilisateur qu'ils sont ignorés.

version 3.1.3

J'ai le même problème sur centos, dans ma conf j'ai ajouté une section [supervisord] en plus de mon programme 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

J'ai résolu le problème en concatinant echo_supervisord_conf dans mon fichier de configuration.

Je nomme généralement le fichier de sous-configuration supervisord.conf dans le projet. Lorsque vous exécutez supervisorctl dans ce dossier de projet, il considérera que supervisord.conf est le fichier de configuration principal, ce qui provoque également cette erreur.

Salut, j'ai utilisé le superviseur sur le Mac pour écrire le fichier de configuration pour exécuter la commande
supervisord - c/Users/wujunze/etc/supervisor. The conf
Ensuite, exécutez supervisorctl signalé cette erreur :
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

J'ai aussi le même problème

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>

Moi aussi.
Y a-t-il une solution ?

sudo service supervisor start fonctionné pour moi. Le démon ne fonctionnait pas

pour moi, la solution était, le démon ne fonctionnait pas
sudo systemctl status supervisord
sudo systemctl enable supervisord
sudo systemctl start supervisord

prêt
sudo supervisorctl reread
sudo supervisorctl start process:*

J'ai rencontré ce problème avec une erreur similaire lors de l'exécution dans un conteneur Docker :

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

Le problème dans mon cas n'était pas un supervisord.conf manquant dans le répertoire actuel, et -c supervisord.conf n'a pas aidé. Le problème était que le supervisord.conf dans le répertoire actuel était tout simplement trop fin et qu'il manquait des éléments dont supervisorctl besoin. Voici ce que je devais ajouter :

[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

docker : erreur:, [Errno 99] Impossible d'attribuer l'adresse demandée : fichier : /usr/lib64/python2.7/socket.py ligne : 571

Docker:
Erreur:, [Errno 2] Aucun fichier ou répertoire de ce type : fichier : /usr/lib/python2.7/socket.py ligne : 228
La commande '/bin/sh -c superviseurctl update' a renvoyé un code différent de zéro : 2

Créez simplement la configuration par défaut

La clé ici est https://github.com/Supervisor/supervisor/issues/376#issuecomment -404385767. Si vous configurez manuellement le fichier de configuration supervisé et n'incluez pas les composants du serveur, vous ne pouvez pas vous y connecter via superviseurctl.

j'ai
J'ai rencontré le même problème, mais le scénario d'utilisation est que l'environnement virtuel d'anaconda, après le démarrage de l'utilisateur non root, le rechargement ultérieur échoue via l'utilisateur non root.

L'erreur est la suivante :
Erreur:, [Errno 2] Aucun fichier ou répertoire de ce type : fichier : /usr/work/tool/anaconda3/envs/python27/lib/python2.7/socket.py ligne : 228

Le superviseur nécessite-t-il le démarrage d'un utilisateur privilégié ?

J'ai rencontré ce problème avec une erreur similaire lors de l'exécution dans un conteneur Docker :

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

Le problème dans mon cas n'était pas un supervisord.conf manquant dans le répertoire actuel, et -c supervisord.conf n'a pas aidé. Le problème était que le supervisord.conf dans le répertoire actuel était tout simplement trop fin et qu'il manquait des éléments dont supervisorctl besoin. Voici ce que je devais ajouter :

[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

marque~

J'ai essayé les suggestions ci-dessus et j'obtiens unix:///var/run/supervisor.sock no such file lors de la configuration du fichier supervisord.conf comme suggéré. Je suis dans un conteneur Docker exécutant Ubuntu 20.04

Face au python file not found an error, code=exited, status=2 une fois j'essaye avec le document officiel mais toujours pareil.
J'ai essayé tellement de solutions pour mon application laravel.

Mais enfin, j'ai essayé avec ma solution.

Voici un exemple de code :

[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

Réf : https://laravel.com/docs/7.x/queues#supervisor -configuration

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

La suggestion de @javabrett provoque malheureusement l'

CRIT Server 'unix_http_server' s'exécutant sans aucune vérification d'authentification HTTP

Comme indiqué dans le ticket n°717, cela peut être évité en sécurisant la configuration. Par exemple:

[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
Cette page vous a été utile?
0 / 5 - 0 notes