0

Mon application se connecte aux domaines G Suite et une fonctionnalité rare permet de télécharger un fichier csv répertoriant tous les utilisateurs.Problèmes de scalabilité liés au téléchargement de Google Storage (à partir de GAE)

Le fichier est enregistré dans Google Storage et téléchargé à partir de celui-ci.

Alors que cela fonctionnait bien pour les domaines normaux, un plus grand domaine (utilisateurs ½M) avait des problèmes d'évolutivité. Le CSV devenir énorme qui conduit à:

Exceeded soft private memory limit of 128 MB with 340 MB after servicing 9 requests total 

A ma connaissance, je ne peux pas faire tous les téléchargements incrémentiels et solution que je peux penser dois garder le fichier en mémoire à un moment donné.

Une solution de contournement que je ne connais pas?

Une solution prête à l'emploi comme la sauvegarde incrémentielle vers Drive? Évitez plutôt la portée supplémentaire.

+0

associés: https://stackoverflow.com/questions/39840101/google-app-engine-and-google-sheets-exceeding-soft-memory-limit –

Répondre

0

Si vous maintenez l'exigence de pouvoir conserver le fichier entier (et/ou ses données associées) en mémoire la seule solution utilise a GAE instance class avec plus de mémoire, par l'intermédiaire de l'élément de configuration instance_class dans le fichier de configuration app.yaml.

Bien sûr, cette solution ne peut fonctionner que si la mémoire requise reste inférieure à la mémoire libre de l'une des classes d'instance disponibles, elle ne peut pas être mise à l'échelle indéfiniment avec la taille CSV.

0

J'ai déjà implémenté une fonctionnalité d'exportation en masse comme celle-ci sur App Engine. Je l'ai fait en utilisant App Engine pour lancer une machine virtuelle de Compute Engine via l'API . Une fois que la machine virtuelle Compute a été lancée, elle exécute un script simple puis se ferme. L'avantage de la machine virtuelle de moteur de calcul est que vous pouvez écrire librement sur l'espace disque temporaire, en économisant de la mémoire. Par défaut, les instances GCE ont un disque racine de 10 Go, ce qui est suffisant pour but this can be increased. Dans l'instance GCE, vous pouvez effectuer vos appels d'API GSuite et générer votre exportation sous forme de fichier temporaire sur le disque, puis, une fois prêt, vous pouvez le télécharger à l'aide des API drive ou google cloud. Ensuite, obtenez l'instance de moteur de calcul à shut itself down. L'utilisation de l'API GCE à partir d'App Engine n'est pas aussi difficile que cela en a l'air. I wrote up a detailed blog post qui décrit comment configurer un service Web sur App Engine pouvant contrôler les instances de moteur de calcul. À la fin, il renvoie à un exemple complet déployable sur github. Vous devez écrire le script pour faire votre exportation, mais si vous pouvez faire une image Docker de votre script, ce service peut l'exécuter!