2017-09-07 2 views
0

Quelle est la manière standard d'utiliser gRPC et le tampon de protocole pour transférer un fichier ou des images d'un processus à un autre? Le fichier va de 1 Mo à 6 Mo.Transfert de fichiers à l'aide de gRPC

Fondamentalement, je veux savoir comment mettre en œuvre des paires de code émetteur/récepteur pour python, C++ et golang.

http://github.com/johanbrandhorst/chunker

C'est le plus proche que je peux trouver à ce jour pour golang. Je pense qu'il est extensible à python et C++. Une approche plus générale avec moins de dépendances est préférée.

Je crée des multiservices pour échanger des images entre machines/processus via le passage de message IPC. Une autre option consiste à utiliser la mémoire partagée. Je ne suis pas sûr si Redis peut stocker des images

Répondre

1

Je ne l'ai pas fait auparavant, mais je pense que cela se résume aux types pris en charge par le langage de tampon de protocole.

Ma compréhension est que vous pouvez utiliser le type bytes car il peut contenir une séquence arbitraire d'octets. Encoder le contenu avant de le stocker, l'assigner et "l'expédier"!

Regardez here pour les types scalaires.

Une autre approche consisterait à stocker le fichier dans un emplacement que les «services» impliqués peuvent lire - et éventuellement écrire si nécessaire pour certains d'entre eux. Puis envoyez un message gRPC aux services "intéressés" avec les informations nécessaires pour accéder (ou faire autre chose avec) le (s) fichier (s) en question.

0

Pour les fichiers de petite taille (disons moins de 1 Mio), mettre le fichier entier dans un seul message (comme bytes) est très simple. Pour les fichiers plus volumineux, il peut être naturel de découper les fichiers en parties et d'utiliser un flux. voir my answer for a similar question.