Pygithub: Suporte assíncrono

Criado em 24 mai. 2020  ·  10Comentários  ·  Fonte: PyGithub/PyGithub

O que você acha do suporte assíncrono do PyGithub? Se eu fizer suporte assíncrono para PyGithub - você aceita?

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.

Todos 10 comentários

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.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

jacquev6 picture jacquev6  ·  3Comentários

mlainez picture mlainez  ·  7Comentários

rthill91 picture rthill91  ·  4Comentários

PeterJCLaw picture PeterJCLaw  ·  6Comentários

nixoz2k7 picture nixoz2k7  ·  7Comentários