python / python/cpython

`add_signal_handler` support for all platforms

Aberta
#137,863 1 comentário 1 reação 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

stdlib topic-asyncio type-feature
Linguagem predominante
Python
Estrelas
77.2k
Forks
36k
Métricas de merge de PRs
Métricas de PR pendentes

Descrição

Feature or enhancement

Proposal:

I'm currently writing this to support signals on Windows and Linux:

loop = asyncio.get_running_loop()

def shutdown(*args):
    // some shutdown sequence

if sys.platform == "win32":
    for sig in (signal.SIGINT, signal.SIGTERM):
        signal.signal(sig, shutdown)
else:
    for sig in (signal.SIGINT, signal.SIGTERM):
        loop.add_signal_handler(sig, shutdown)

Works great, but why would signal.signal be supported on Linux and Windows, but asyncio's AbstractEventLoop via add_signal_handler only on Linux? Can't this be platform agnostic?

add_signal_handler would raise the following on Windows:

[...]\Python\Python313\Lib\asyncio\events.py", line 596, in add_signal_handler
    raise NotImplementedError
Has this already been discussed elsewhere?

No response given

Links to previous discussion of this feature:

No response

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Direção de pesquisa

Comece com asyncio.AbstractEventLoop.add_signal_handler e o NotImplementedError mostrado na linha 596 de Python313/Lib/asyncio/events.py, depois compare-o com signal.signal no Windows e no Linux. Considera-se concluído quando for estabelecido se add_signal_handler pode fornecer o comportamento multiplataforma solicitado e o suporte à plataforma resultante for documentado ou implementado.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
python
Domínio
operating-systems
Tipo de issue
Funcionalidade
Dificuldade
5/5
Tempo estimado
Mais de uma semana
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
25/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.