Algorithme génétique en santé (5/5)

🆙 Déployer une API en Python#

Dans le dernier article, nous avions réussi à construire un algorithme génétique en Python. On verra maintenant comment on déploie une API écrite en Python sur AWS.

Pourquoi AWS ?

AWS a un service qui s’appelle fonctions Lambda qui permet d’avoir des microservices en ligne sans avoir besoin d’un serveur. Le coût pour 1 000 000 d’éxécutions d’une fonction lambda est de 50 centimes d’euro. C’est donc gratuit de faire les tests de tout ce que j’ai montré des les articles sur les algorithmes génétiques.

Les prochaines étapes sont :

  1. Créer un compte AWS
  2. Télécharger AWS cli pour gérer le compte AWS en ligne de commande. Se loguer sur AWS avec aws-cli
  3. Installer l’outil Chalice
  4. Ecrire le script de lancement sur Google Sheets

On commence.

1️⃣ Créer un compte sur AWS#

Vous avez bien évidemment besoin d’un compte sur AWS.

2️⃣ Télécharger AWS cli#

3️⃣ Chalice#

Pour le faire on va utiliser un outil créé par AWS même dans ce but : Chalice

Une fois que votre script est déployé vous verrez le lien vers votre fonction :

C’est le lien après Rest API URL : qu’il faut récupérer

4️⃣ Google Sheet#

Demo (click pour agrandir)

On va à l’éditeur de scripts comme indiqué sur l’image.

Pour ajouter un menu à un Google Spreadsheet on utilise cette fonction :

function onOpen() {
  // On ouvre le fichier en cocurs
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [];
  // On ajoute le nom à afficher sur le menu et on référence la fonction qui va être executée
  menuEntries.push({name: "GetValues", functionName: "calculate"});
  // On ajoute le menu à la barre d'outils de Google Sheets avec titre 'Scripts'
  ss.addMenu("Scripts", menuEntries);
}

Je vais montre comment récupérer une colonne spécifique et l’envoyer à l’API que nous avons créé.

Mais AVANT. Puisqu’on envoie de l’information à l’API, il faut une méthode POST. Dans l’exemple de Chalice la fonction est en GET. Pour recevoir une requête en POST il faut écrire :

@app.route('/', methods=['POST'], content_types=['application/json'], cors=True)
def index():
 #Fonction à éxecuter
 return

Et dans l’éditeur de scripts de Google Sheet :

// fonction calculate est le nom que nous lui avons attribué dans le menu
function calculate(){
  // Récupération de la feuille active
  var sheet = SpreadsheetApp.getActiveSheet();
  // Combien de lignes il y a ?
  var lastrow = sheet.getLastRow();
  // Je récupère les valeurs de la feuille. On démarre de la ligne 2 et colonne 2 et on choisis toutes les valeurs depuis cette cellule vers le nombre de lignes total vers le bas et 5 colonnes vers la droite
  var values = sheet.getRange(2,2,lastrow,5).getValues();
  // Options à ajouter à la fonction UrlFetchApp de Google App Script
  var options = {
    'method' : 'post',
    'headers': {"Accept":"*/*","Content-Type": "application/json" },
    'payload' : JSON.stringify({"values":values})
  }
  // Envoi des valeurs à l'API
  var response = UrlFetchApp.fetch('<URL de la fonction lambda>', options);
  // La réponse est stockée dans la variable response
}

Il ne resque qu’à afficher les résultats dans les cellules du Google Sheet qui vous conviennent.

C’est la fin de cette série sur les algorithmes génétiques.

Bientôt plein de nouveautés dans ce blog !

comments powered by Disqus

© 2021