Supervisor: Erro Python ao executar supervisorctl

Criado em 20 fev. 2014  ·  29Comentários  ·  Fonte: Supervisor/supervisor

Acabei de instalar o pip, mas quando tento executá-lo, recebo o erro estranho abaixo. Alguma ideia do que pode estar acontecendo? É um bug?

$ sudo supervisorctl
erro:, [Errno 97] Família de endereços não suportada pelo protocolo: arquivo: /usr/lib64/python2.6/socket.py linha: 567

supervisorctl

Comentários muito úteis

Encontrei esse problema com um erro semelhante, ao executar em um contêiner do Docker:

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

O problema no meu caso não era a falta de supervisord.conf no diretório atual e -c supervisord.conf não ajudou. O problema era que supervisord.conf no diretório atual era muito fino e estava faltando coisas que supervisorctl precisa. Aqui está o que eu precisava adicionar:

[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

Todos 29 comentários

O que está em seu supervisord.conf ? Normalmente /etc/supervisor/supervisord.conf .

Vou encerrar por falta de atividade. Se você ainda estiver tendo esse problema e puder fornecer mais informações, podemos reabri-lo.

Recebo exatamente o mesmo erro em um supervisor recém-instalado com o arquivo de configuração padrão como resultado de echo_supervisord_conf. Eu instalei o arquivo de configuração localmente e o estou executando como um usuário normal e não como 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 se você executar supervisorctl -c /explicit/path/to/config/file/echoed/out/supervisord.conf, você obtém o mesmo erro? Em caso afirmativo, você pode incluir o conteúdo desse arquivo em um comentário separado?

Sim, isso consertou. Não percebi que tinha que passar o arquivo de configuração para a chamada do supervisorctl também, mas é claro que faz sentido .. Desculpe pelo alarme errado.

(Embora uma mensagem de erro mais descritiva em vez da conexão de soquete com falha seria mais útil. Eu nem mesmo tenho um arquivo /etc/supervisor.conf , então eu teria imaginado que supervisorctl teria falhado com um " Arquivo de configuração não encontrado "erro ou algo assim.)

Um erro específico "não encontrado" deve ser emitido se o supervisord não puder encontrar um arquivo de configuração. Em versões posteriores, também há um erro diferente de "não legível" se o supervisord encontrar um, mas não puder lê-lo. Quando -c não é usado para especificar um caminho explícito para um arquivo de configuração, supervisord irá procurar por um .

supervisorctl também pesquisará por um arquivo de configuração. Antes do Supervisor 3.0b2, um arquivo de configuração sempre era necessário e geraria um erro conforme descrito acima. No 3.0b2 e posterior, supervisorctl pode ser usado sem um arquivo de configuração. Nesse caso, as informações de conexão devem ser fornecidas nas opções de linha de comando. Acho que se ele não conseguir encontrar um arquivo de configuração e você não fornecer as opções de conexão, o padrão é http: // localhost : 9001 sem autenticação. Não tenho certeza disso.

Parece que o supervisorctl está procurando e encontrando outro arquivo de configuração em seu sistema, mas esse arquivo contém uma linha que causa o erro Address family not supported by protocol . Também pode ser que o supervisorctl esteja usando seu padrão, mas o padrão causa esse erro em seu sistema. Seria útil se pudéssemos obter mais informações. Na última vez em que isso foi relatado, não descobrimos.

_Editar: Esclarecido o comportamento do supervisor._

Interessante. O que estava acontecendo comigo é que havia um arquivo supervisor.conf no diretório atual (o padrão). Quando executo o comando como supervisorctl recebo o erro, mas quando mudei para o uso de supervisorctl -c supervisor.conf , não recebo mais o erro. Devo também observar que isso é do supervisor instalado em um virtualenv.

Pelo que entendi de sua descrição, se um arquivo de configuração for encontrado no diretório atual, ele deve ser usado e o comportamento deve ser o mesmo de executá-lo explicitamente com a opção -c . De alguma forma, não é isso que acontece do meu lado.

Parece que um commit em # 95 introduziu um comportamento incorreto (em particular, este commit: https://github.com/JensRantil/supervisor/commit/3385f17a9c465359be3f504c611700ff60bea0d4). Ele está lá desde o final de 2011 e inverte a ordem de pesquisa de forma que $CWD/etc/supervisord.conf seja encontrado antes de $CWD/supervisord.conf .

Vou tentar consertar isso no branch e no master 3.1.X.

Opa, não, esse commit não tem culpa. Ele apenas tocou em linhas que faziam parte de um bug preexistente, ou pelo menos uma discordância entre os documentos e o código.

Excelente! Mas FWIW, eu definitivamente não tinha um arquivo $CWD/etc/supervisor.conf . Portanto, não tenho certeza se esse bug explica a discrepância que observei ao usar a opção -c .

Não tenho certeza se há um problema melhor para relatar isso, mas parece relacionado:

Se eu tiver um supervisord.conf no diretório atual, mas não tiver a seção supervisorctl, será impossível executar o supervisorctl com os parâmetros da linha de comando:

$ 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

Executar o mesmo comando em um diretório diferente funciona bem.

Eu sugiro permitir que argumentos de linha de comando explícitos substituam o arquivo de configuração detectado implicitamente ou informar ao usuário que eles são ignorados.

versão 3.1.3

Estou com o mesmo problema no centos, na minha conf adicionei uma seção [supervisord] além da minha 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

Corrigi o problema concatinando echo_supervisord_conf ao meu arquivo de configuração.

Eu geralmente nomeio o arquivo de subconfiguração como supervisord.conf no projeto. Quando você executa supervisorctl nessa pasta de projeto, considera que supervisord.conf é o arquivo de configuração principal, o que também causa esse erro.

Olá, usei o supervisor no Mac para escrever o arquivo de configuração para executar o comando
supervisord - c/Users/wujunze/etc/supervisor. The conf
Em seguida, execute supervisorctl relatou este erro:
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

Eu também tenho o mesmo problema

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>

eu também.
Há uma solução?

sudo service supervisor start funcionou para mim. O daemon não estava funcionando

para mim, a solução era, o daemon não estava funcionando
sudo systemctl status supervisord
sudo systemctl enable supervisord
sudo systemctl start supervisord

pronto
sudo supervisorctl reread
sudo supervisorctl start process:*

Encontrei esse problema com um erro semelhante, ao executar em um contêiner do Docker:

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

O problema no meu caso não era a falta de supervisord.conf no diretório atual e -c supervisord.conf não ajudou. O problema era que supervisord.conf no diretório atual era muito fino e estava faltando coisas que supervisorctl precisa. Aqui está o que eu precisava adicionar:

[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: erro:, [Errno 99] Não é possível atribuir o endereço solicitado: arquivo: /usr/lib64/python2.7/socket.py linha: 571

Docker:
erro:, [Errno 2] Esse arquivo ou diretório não existe: arquivo: /usr/lib/python2.7/socket.py linha: 228
O comando '/ bin / sh -c supervisorctl update' retornou um código diferente de zero: 2

Basta criar a configuração padrão

A chave aqui é https://github.com/Supervisor/supervisor/issues/376#issuecomment -404385767. Se você estiver configurando o arquivo de configuração supervisord manualmente e não incluir os componentes do servidor, não será possível conectar-se a ele por meio do supervisorctl.

eu tenho
Eu encontrei o mesmo problema, mas o cenário de uso é que o ambiente virtual do anaconda, após o usuário não root iniciar, o recarregamento subsequente falha através do usuário não root.

O erro é o seguinte:
erro:, [Errno 2] Esse arquivo ou diretório não existe: arquivo: /usr/work/tool/anaconda3/envs/python27/lib/python2.7/socket.py linha: 228

O supervisor requer inicialização de usuário privilegiado?

Encontrei esse problema com um erro semelhante, ao executar em um contêiner do Docker:

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

O problema no meu caso não era a falta de supervisord.conf no diretório atual e -c supervisord.conf não ajudou. O problema era que supervisord.conf no diretório atual era muito fino e estava faltando coisas que supervisorctl precisa. Aqui está o que eu precisava adicionar:

[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

marca ~

Tentei as sugestões acima e estou recebendo unix:///var/run/supervisor.sock no such file ao configurar o arquivo supervisord.conf conforme sugerido. Estou dentro de um contêiner do Docker executando o Ubuntu 20.04

Enfrentando o python file not found an error, code=exited, status=2 uma vez, tento com o documento oficial, mas ainda o mesmo.
Eu tentei tantas soluções para meu aplicativo laravel.

Mas, finalmente, tentei com minha solução.

Aqui está um exemplo para o código:

[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

A sugestão de @javabrett infelizmente faz com que erros como o seguinte sejam registrados a cada inicialização:

Servidor CRIT 'unix_http_server' em execução sem qualquer verificação de autenticação HTTP

Conforme discutido no tíquete nº 717, isso pode ser evitado protegendo a configuração. Por exemplo:

[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
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

alexmnv picture alexmnv  ·  3Comentários

guettli picture guettli  ·  4Comentários

AlphaSRE picture AlphaSRE  ·  3Comentários

ymsaout picture ymsaout  ·  4Comentários

crybat picture crybat  ·  5Comentários