danielgtaylor / danielgtaylor/python-betterproto

unary_stream message issue

Aperta
#430 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Python
Stelle
1.8k
Fork
234
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

I'm currently facing the issue that a unary_stream connection does not behave as I would expect. (betterproto version b5)

## Client code:
![image](https://user-images.githubusercontent.com/79153884/193418261-880ae8b2-75bf-4ee5-a707-72404a92637c.png)

## Server code:
![image](https://user-images.githubusercontent.com/79153884/193418299-f9e63c37-e4a3-4ecb-a32a-ae76b1103c33.png)
![image](https://user-images.githubusercontent.com/79153884/193418312-331223ad-8c15-43e9-ba5f-0d46b8617b38.png)

Opening the connection works fine, the server receives the request and begins its job.
The task the server performs is taking 1 min +/-, during that time it sends multiple responses to the client.
While debugging I could see that subroutines have been executed and sending data (server side).

But nothing arrives at the client, the red X located at the client if statement is a breakpoint that never executes until after the server method returns. If I breakpoint the server at its last statement (red X) the client is idle. Only after continuing, allowing the server to complete the method (closing the connection?), within the client program the subroutines trigger:
![image](https://user-images.githubusercontent.com/79153884/193418482-1e8314d9-753c-4c9d-9db5-f473a0fda2d5.png)

All messages then are 'spammed' to the waiting client. At first glance, nothing is missing, but I expected the stream to work like in the default google implementation. Receiving the messages one after another when sent from the server.
Is this intended behavior?

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Riprodurre l’esempio unary_stream del client e del server mostrato nell’issue con betterproto b5, quindi osservare quando il client riceve i messaggi mentre il server è ancora in esecuzione. Confrontare questo comportamento con la semantica di streaming prevista e determinare se la consegna prima del ritorno del metodo del server sia intenzionale; completato quando il comportamento è spiegato e sono chiari la modifica appropriata al progetto o l’ambito dei test.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
grpc, python
Ambito
backend-api-design
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
30/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.