Como sempre, é preciso criar um arquivo chamado app.yaml em que você configura o aplicativo do App Engine. Para definir o servidor da Web, faça alterações no arquivo app.yaml.
Para definir um servidor da Web:
Crie um módulo Python, por exemplo, main.py e crie um objeto endpoints.api_server no nível superior:
api=endpoints.api_server([EchoApi])
O código api = endpoints.api_server([EchoApi]) cria um aplicativo WSGI que encaminha solicitações de API para os métodos na classe EchoAPI.
Você pode fornecer uma lista de objetos remote.Service definidos quando você criou sua API para endpoints.api_server. Se você tiver uma API implementada em várias classes, o objeto remote.Service será uma coleção de classes conforme descrito em Como criar uma API implementada com várias classes.
A criação de um módulo separado para o objeto endpoints.api_server depende de se você criou uma única API ou várias.
Se você tiver criado várias APIs (que usam várias subclasses remote.Service) definidas em vários arquivos, recomendamos que crie um módulo separado para o objeto endpoints.api_server para importar todos os arquivos de classe.
Se você criou uma única API, será possível adicionar o código endpoints.api_server necessário ao módulo em que a API é definida, já que não é necessário importar outras classes.
No seu arquivo app.yaml, mapeie o servidor da Web que você acabou de criar para o local do Cloud Endpoints da seguinte maneira:
handlers:# The endpoints handler must be mapped to /_ah/api.-url:/_ah/api/.*script:main.api
em que main é o módulo do Python em que você definiu o objeto endpoints.api_server.
Como exibir sua API de um caminho diferente
Opcional: para exibir a API a partir de um caminho diferente, por exemplo, /api/:
Como gerar registros no Endpoints Frameworks para Python
O Endpoints Frameworks para Python usa o módulo de registro padrão do Python para registrar informações sobre o status do aplicativo e o ciclo de vida da solicitação. Para saber mais sobre os registros do App Engine e sobre como visualizá-los, consulte Como ler e gravar registros de aplicativos na documentação do App Engine.
O módulo de geração de registros do Python fornece níveis de registros predefinidos. Em ordem crescente de gravidade, os níveis de registros são:
Nível de registro
Descrição
DEBUG
Fornece registros detalhados. Normalmente, esse nível só é definido ao solucionar um problema.
INFO
O nível de registro padrão para o Endpoints Frameworks. Permite rastrear o progresso do aplicativo em um alto nível.
WARNING
Alerta que algo inesperado ocorreu, mas o aplicativo consegue se recuperar e ser executado normalmente.
ERROR
Alerta sobre um erro que pode causar perda de funcionalidade, mas o aplicativo ainda está em execução.
CRITICAL
Alerta sobre um erro ou evento grave que pode encerrar o aplicativo.
Os loggers existem em uma hierarquia separada por pontos. Por exemplo, o logger endpoints.api_config é filho do logger endpoints. Essa hierarquia permite um controle preciso sobre quais registros são emitidos ou suprimidos. Normalmente, só são alterados os dois loggers raiz para o Endpoints Frameworks: endpoints e endpoints_management.
Habilitar a geração de registros DEBUG para o Endpoints Frameworks
Para evitar sobrecarregar o leitor de registro, o Endpoints Frameworks configura seus loggers para registrar apenas entradas de log com o nível INFO ou superior. Em qualquer momento depois de o Endpoints Frameworks ter sido importado para o módulo, é possível alterar o nível de registro da seguinte maneira:
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-04 UTC."],[[["\u003cp\u003eA web server must be defined within the \u003ccode\u003eapp.yaml\u003c/code\u003e file to route requests to your API's methods using the Web Server Gateway Interface (WSGI).\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eendpoints.api_server\u003c/code\u003e object, created in a Python module like \u003ccode\u003emain.py\u003c/code\u003e, functions as a WSGI application that routes API requests, with the option to include multiple \u003ccode\u003eremote.Service\u003c/code\u003e objects if you have a multi-class API.\u003c/p\u003e\n"],["\u003cp\u003eIn the \u003ccode\u003eapp.yaml\u003c/code\u003e file, you must map the web server to the Cloud Endpoints location, by setting the url handler to \u003ccode\u003e/_ah/api/.*\u003c/code\u003e or a different path if configured, and link the script to the module where \u003ccode\u003eendpoints.api_server\u003c/code\u003e was defined.\u003c/p\u003e\n"],["\u003cp\u003eEndpoints Frameworks for Python employs the standard Python logging module, with levels ranging from \u003ccode\u003eDEBUG\u003c/code\u003e to \u003ccode\u003eCRITICAL\u003c/code\u003e, defaulting to \u003ccode\u003eINFO\u003c/code\u003e, and can be modified using the \u003ccode\u003esetLevel\u003c/code\u003e method for loggers like \u003ccode\u003eendpoints\u003c/code\u003e and \u003ccode\u003eendpoints_management\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Creating a web server\n\nYou must define a web server that uses the\n[API or APIs you have created](/endpoints/docs/frameworks/python/create_api).\nCloud Endpoints Frameworks for Python implements the standard\n[Web Server Gateway Interface](https://wsgi.readthedocs.io/)\n(WSGI) to route requests to your API to the methods in your code.\n\nAs with every application that runs on App Engine, you must create a file\ncalled [`app.yaml`](/appengine/docs/standard/python/config/appref) in which you\nconfigure your App Engine app's settings. To define the web server,\nyou make changes to your `app.yaml` file.\n\nTo define a web server:\n\n1. Create a Python module, for example `main.py`, and create an\n `endpoints.api_server` object at the top-level:\n\n api = endpoints.api_server([EchoApi])\n\n The code `api = endpoints.api_server([EchoApi])` creates a WSGI application\n that routes API requests to the methods in the `EchoAPI` class.\n\n You can provide a list of `remote.Service` objects (which you defined when\n you [created your API](/endpoints/docs/frameworks/python/create_api)) to\n `endpoints.api_server`. If you have an API that is implemented in several\n classes, then your `remote.Service` object is a collection of classes as\n described in [Creating an API implemented with multiple\n classes](/endpoints/docs/frameworks/python/create-multi-class-api).\n\n Whether you create a separate module for the `endpoints.api_server` object\n depends on whether you created a single API or multiple APIs.\n - If you created multiple APIs (using multiple `remote.Service`\n subclasses) that are defined in multiple files, then we recommend that\n you create a separate module for the `endpoints.api_server` object so\n that you can import all the class files.\n\n - If you created a single API, you can add the required\n `endpoints.api_server` code to the module where you define your API\n because you don't need to import any other classes.\n\n | **Warning:** if your code doesn't call `endpoints.api_server`, you will get a deployment failure when you try to deploy.\n2. In your `app.yaml` file, map the web server you just created to\n the Cloud Endpoints location as follows:\n\n handlers:\n # The endpoints handler must be mapped to /_ah/api.\n - url: /_ah/api/.*\n script: main.api\n\n where `main` is the Python module you in which you defined the\n `endpoints.api_server` object.\n\nServing your API from a different path\n--------------------------------------\n\nOptional: To serve your API from a different path, for example `/api/`:\n\n1. Modify the decorator:\n\n @endpoints.api(name='echo', version='v1', base_path='/api/')\n\n2. Change the `handlers` section in the `app.yaml` file:\n\n handlers:\n - url: /api/.*\n script: main.api\n\nLogging in Endpoints Frameworks for Python\n------------------------------------------\n\nEndpoints Frameworks for Python uses the\n[standard Python logging module](https://docs.python.org/2/library/logging.html)\nto log information about\nthe application's status and request lifecycle. To learn more about\nApp Engine logs and how to view them, review\n[Reading and writing application logs](/appengine/docs/standard/python/logs#writing_application_logs)\nin the App Engine documentation.\n\nThe Python logging module provides predefined log levels. In increasing order\nof severity, the log levels are:\n\nLoggers exist in a dot-separated hierarchy. For example, the logger\n`endpoints.api_config` is a child of the logger `endpoints`. This hierarchy\ngives you precise control over which logs are emitted or suppressed. Typically,\nyou only change the two root loggers for Endpoints Frameworks:\n`endpoints` and `endpoints_management`.\n\n### Enable `DEBUG` logging for Endpoints Frameworks\n\nTo avoid overloading the log reader, Endpoints Frameworks sets its\nloggers to only record log entries with the `INFO` log level or higher. At any\ntime after Endpoints Frameworks has been imported into your module,\nyou can change the log level as follows: \n\n import logging\n logging.getLogger('endpoints').setLevel(logging.DEBUG)\n logging.getLogger('endpoints_management').setLevel(logging.DEBUG)\n\nThe `setLevel` method sets the minimum log level for the logger."]]