Google Optimization Tools en una Azure Function

La suite de Optimización de Google, Google Optimization Tools (ortools), ofrece un amplio abanico de herramientas de constraint programming que normalmente son de pago (como Frontline, Groubi ).

Debido a la necesidad de desarrollo de prototipos este solver ofrece una posibilidad de prototipar un desarrollo de manera funcional para saber si los modelos matemáticos son sadisfactibles antes de facturar al cliente un proyecto complejo.

Para desgracia de nuestro entorno de trabajo y como ya es constumbre en Google, los wrappers de C# estan en funciones obsoletas. Para nuestra fortuna, la libreria de Python está al día aunque a día de hoy (09-2018) Python en Azure Functions a dia de hoy está en experimental.

1.- Instalar Python x64 a la Azure Function

La versión que por defecto funciona en Azure Function es la 2.6, la cual el package de ortools NO soporta. También por defecto se ejecuta en x86 así que procederemos a activar el x64 y posteriormente instalar la versión más reciente que nos permiten desde Azure, la 3.6.4.

Primero activamos el modo x64 al servidor de funciones:

Platform features > Application settings y click a 64-bit a Platform

A partir de ahora tendremos que realizar acciones de consola. Algunas se pueden hacer visualmente, pero a través de consola se explican aquí o aquí. De manera visual hay que acceder al kudu a través de esta dirección:

https://[NombreDelServerDeFunciones].scm.azurewebsites.net

Accedemos entonces a “Site extensions” y añadimos Python 3.6.4 x64

Posteriormente volvemos a Platform features > Application settings para añadir estas lineas:

Handler mappings

EXTENSION
SCRIPT PROCESSOR
ARGUMENTS

Application settings

APP SETTING NAME
VALUE
0

Una vez finalizados estos pasos, podemos proceder a reiniciar el servidor de App Functions y proceder a instalar la libreria ortools con pip.

Volvemos a Kudu y tecleamos la instalación de ortools a través a pip:

python -m pip install ortools