--- title: "Configurar la Advanced I/O Function" url: https://docs.catalyst.zoho.com/es/tutorials/alien-city/python/configure-advanced-io-function/ description: "Crea una aplicación web de una sola página con Catalyst Advanced I/O Function y Data Store para reportar o buscar encuentros con alienígenas en una ciudad." last_updated: 2026-11-04T10:10:44Z service: All Services type: tutorial related_links: - name: "Functions" url: /es/serverless/help/functions/introduction/ - name: "Advanced I/O Functions" url: /es/serverless/help/functions/advanced-io/ - name: "Functions Directory Structure" url: /es/cli/v1/project-directory-structure/functions-directory/ --- # Configurar la Advanced I/O Function Comencemos a programar la aplicación Alien City configurando el componente de función. El directorio de la función Python ([`functions/alien_city_function`](https://docs.catalyst.zoho.com/es/cli/v1/project-directory-structure/functions-directory/)) contiene los siguientes archivos: * El archivo principal de la función `main.py` * El archivo de configuración `catalyst-config.json` * El archivo `requirements.txt` para mencionar cualquier biblioteca externa que puedas agregar. Agregarás código en el archivo principal de la función `main.py`. Las dos APIs en la Advanced I/O function que manejan el enrutamiento entre el servidor y el Data Store son: * `GET /alien`: Para verificar si hay alienígenas presentes en una ciudad * `POST /alien`: Para reportar la presencia de alienígenas en una ciudad Ahora agreguemos el código en el archivo de la función. Copia el código que se muestra a continuación y pégalo en `main.py` en el directorio `functions/alien_city_function` de tu proyecto, y guarda el archivo. Puedes usar cualquier IDE de tu preferencia para trabajar con los archivos de la aplicación. > **Nota:** Por favor, revisa el código en esta sección para asegurarte de que lo comprendes completamente. **main.py** ```python import json import zcatalyst_sdk import logging from flask import Request, make_response, jsonify tableName = 'AlienCity' # La tabla creada en el Data Store columnName = 'CityName' # La columna creada en la tabla def handler(request: Request): try: app = zcatalyst_sdk.initialize() # Inicializando el SDK de Catalyst logger = logging.getLogger() if request.path == "/alien" and request.method == 'POST': # La API POST que reporta el encuentro con alienígenas para una ciudad en particular req_data = request.get_json() name = req_data.get('city_name') rowid = getAlienCountFromCatalystDataStore(name) # Consulta la tabla del Catalyst Data Store y verifica si existe una fila para la ciudad dada if len(rowid) == 0: # Si la fila no está presente, entonces se inserta una nueva fila logger.info("Alien alert!") # Se escribe en los logs. Puedes ver este log desde Logs en la sección Monitor de la consola datastore_service = app.datastore() table_service = datastore_service.table(tableName) row_data = { columnName:name } table_service.insert_row(row_data) # Inserta el nombre de la ciudad como una fila en la tabla del Catalyst Data Store response = make_response(jsonify({ "message": "Thanks for reporting!" }), 200) else: # Si la fila está presente, entonces se envía un mensaje indicando duplicación response = make_response(jsonify({ "message": "Looks like you are not the first person to encounter aliens in this city! Someone has already reported an alien encounter here!" }), 200) return response elif request.path == "/alien" and request.method == 'GET': # La API GET que verifica la tabla en busca de un encuentro con alienígenas en esa ciudad name = request.args.get('city_name') rowid = getAlienCountFromCatalystDataStore(name) # Consulta la tabla del Catalyst Data Store y verifica si existe una fila para la ciudad dada if len(rowid) == 0: response = make_response({ "message": "Hurray! No alien encounters in this city yet!", "signal": "negative" }, 200) else: response = make_response(jsonify({ "message": "Uh oh! Looks like there are aliens in this city!", "signal": "positive" }), 200) return response else: response = make_response("Error. Invalid Request") response.status_code = 404 return response except Exception as err: # Envía una respuesta de error logger.error(f"Exception in AlienCityAIO :{err}") response = make_response(jsonify({ "error": "Internal server error occurred. Please try again in some time." }), 500) return response def getAlienCountFromCatalystDataStore(cityname): # Verifica si ya se reportó un encuentro con alienígenas para la ciudad dada consultando la tabla del Data Store app = zcatalyst_sdk.initialize() zcql_service = app.zcql() query = f"SELECT * FROM {tableName} WHERE {columnName} = '{cityname}'" output = zcql_service.execute_query(query) return output ``` La Advanced I/O function está ahora configurada. Discutiremos la arquitectura de la función y el client en la siguiente sección.