martes, 6 de noviembre de 2018

Google Cloud Functions with Python

Viene de https://itnext.io/writing-google-cloud-functions-with-python-3-49ac2e5c8cb3


Hasta hace poco, Node.js 6 era la única opción para escribir funciones de Google Cloud. Eso ha cambiado ahora con la adición de Node.js 8 y los también se puede ejecutar de Python 3 disponibles en la versión beta pública.

Veamos cómo usar el entorno de Python al implementar una función HTTP que realiza la misma tarea que hace la demostración de Node.js 8 Cloud Functions. Usaremos la biblioteca de request y la API randomuser.me para generar un objeto JSON que representa esos datos sobre un solo usuario, luego agregaremos una clave adicional llamada generator ...

----------------------------------------------------------------------------------------
import flask
import requests

def getUserDetails(request):
  user = requests.get('https://randomuser.me/api/').json()
  user = user['results'][0]
  user['generator'] = 'google-cloud-function'

  return flask.jsonify(user)


----------------------------------------------------------------------------------------


Este código  incluyen:


  • El tiempo de ejecución de Python utiliza Python 3.7.0
  • Tus funciones tienen que estar dentro de en un archivo llamado main.py
  • El argumento de request de la función será un objeto de solicitud Flask.
  • La función debe devolver todo lo que se puede hacer en un objeto de respuesta de Flask utilizando make_response de Flask; en este caso, pasamos una cadena JSON
  • Las dependencias se especifican en requirements.txt, que se ve así para nuestro ejemplo (los números de versión también se pueden especificar, por ejemplo, request=2.19.1):



Al implementar esta función, tenemos que decirle a Google que use   Python 3. Para hacer esto, debemos asegurarnos de tener los últimos comandos de gcloud beta:

----------------------------------------------------------------------------------------
$ gcloud components update
$ gcloud components install beta



----------------------------------------------------------------------------------------

El despliegue es simple (tenemos que usar los comandos beta y explícitamente decir que queremos el usar Python):

----------------------------------------------------------------------------------------
$ gcloud beta functions deploy getUserDetails --runtime python37
--trigger-http --project



----------------------------------------------------------------------------------------

Donde es el ID de su proyecto de Google Cloud. La función se puede invocar simplemente  visitando su URL, que se verá así:

----------------------------------------------------------------------------------------
https://-.cloudfunctions.net/getUserDetails


----------------------------------------------------------------------------------------

y dependerán de la configuración de su proyecto de Google Cloud, y el comando gcloud mostrará la URL de invocación completa de su función al final de una respuesta correcta.

La salida se ve así:


Ejemplo de salida de la cloud function usando Python.


Salida de ejemplo de Google Cloud Function usando Python:



Y eso es todo lo que hay que hacer!

Si quieres usar o estudiar el código de este artículo: lo puso en GitHub. La documentación de Google para el runtime de Python Cloud Functions se puede leer aquí.