Dataloader in multi-threaded environments
@Cito já está trabalhando nisso.
Desde 10/12/2019.
Avaliação
Esta issue ainda não foi avaliada.
Descrição
Hi,
I've been thinking a bit about how we could implement the Dataloader pattern in v3 while still running in multi-threaded mode. Since v3 does not support Syrus's Promise library, we need to come up with a story for batching in async mode, as well as in multi-threaded environments. There are many libraries that do not support asyncio and there are many cases where it does not make sense to go fully async.
As far as I understand, the only way to batch resolver calls from a single frame of execution would be to use loop.call_soon. But since asyncio is not threadsafe, that means we would need to run a separate event loop in each worker thread. We would need to wrap the graphql call with something like this:
def run_batched_query(...):
loop = asyncio.new_event_loop()
execution_future = graphql(...)
loop.run_until_complete(result_future)
return execution_future.result()
Is that completely crazy? If yes, do you see a less hacky way? I'm not very familiar with asyncio so I would love to get feedback.
Cheers
- Linguagem predominante
- Python
- Estrelas
- 531
- Forks
- 147
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de graphql-python/graphql-core
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 50/100
graphql-python/graphql-core#272 · 1 comentário ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
graphql-python/graphql-core#269 · 1 comentário ·
-
Publish a major version Aberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
graphql-python/graphql-core#267 · 1 comentário ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
graphql-python/graphql-core#257 ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
graphql-python/graphql-core#247 · 8 comentários ·
Todas as issues de graphql-python/graphql-core
Issues semelhantes
-
bug confirmed issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
open-webui/open-webui#30750 · 1 comentário ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 comentário ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
good first issue
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100