O que você acha do suporte assíncrono do PyGithub? Se eu fizer suporte assíncrono para PyGithub - você aceita?
De que maneira você adicionaria suporte assíncrono? Dado que a maioria das operações é feita remotamente no GitHub e nosso código está aguardando uma resposta ou um blob JSON de volta, como isso ajudaria?
Dado que a maioria das operações é feita remotamente no GitHub e nosso código está aguardando uma resposta
Essa é uma boa razão para a introdução assíncrona! Quero dizer... O PyGithub deve lidar com o acesso à API como corrotinas, caso contrário, na maioria das vezes, ele espera a resposta do servidor em vez de fazer algo útil. É um conceito comum em nodejs e atualmente é suportado em @octokit/rest.js
Estou surpreso que ninguém perguntou esse recurso antes ...
Obs: talvez eu tenha entendido mal como o PyGithub funciona atualmente, mas acho que wrappers de API sequenciais e síncronos são menos eficientes que um assíncrono.
Eu poderia adicionar uma nova classe AsyncRequester e fazer em todas as outras classes métodos assíncronos para interagir com ela, preservando a lógica.
O código assíncrono pode ajudar em tarefas em que você precisa produzir um grande número de consultas, por exemplo, em uma pesquisa. Também permitiria que você trabalhasse rapidamente com várias contas no Github
O que soa como um redesenho completo, além de adicionar suporte para a utilização de várias contas. Adoro seu entusiasmo, mas acho que é muito trabalho para pouco ganho.
Pode envolver muito trabalho, mas eu adoraria vê-lo implementado. Atualmente estou preso com JS em minha pesquisa porque o desempenho do @octokit/rest.js supera o do PyGithub. Se alguma ajuda for necessária, eu ficaria feliz em trabalhar nisso também.
Aliás, acho que o suporte a várias contas seria demais! Não é apenas assíncrono um primeiro passo tremendo para ganhos de desempenho?
Talvez eu possa fazer alguma edição e mostrá-la no pull request? Para teste
Asyncio parece uma boa ideia, dado o meu caso de uso. Estou tentando ler todos os arquivos em um repositório recursivamente, e as solicitações síncronas são muito lentas (pode estar faltando algo como limitação de taxa na API do github, mas definitivamente poderíamos tornar essas operações mais rápidas).
Eu sugiro fortemente usar algo como o GitPython para isso, em vez de solicitar tudo por meio da API do GitHub.
Obrigado pela sugestão interessante, vou tentar, pois faz sentido fazê-lo dessa maneira.
Acho que esse assunto não deve ser encerrado. Usar asyncio
para operações vinculadas a E/S é o caso de uso perfeito.
Comentários muito úteis
Acho que esse assunto não deve ser encerrado. Usar
asyncio
para operações vinculadas a E/S é o caso de uso perfeito.