This guide describes how to configure your app to handle warmup
requests. With warmup requests enabled, the App Engine infrastructure issues
GET requests to
/_ah/warmup. You can implement handlers for this request to
perform application-specific tasks, such as pre-caching application data.
Enabling warmup requestsWarmup requests work only if the minimum number of idle instances has been manually set in the
app.yamlfile. If a scaling mode has not been specified in the
app.yamlfile, the default value is
min_idle_instanceselement and warmup requests will not be sent.
In Python, warmup requests are disabled by default. To enable them,
- warmup to the
inbound_services: - warmup
Registering your handler
To register your handler, define the script to handle your warmup requests in
app.yaml file. For example:
inbound_services: - warmup handlers: - url: /_ah/warmup script: main.py login: admin
This example registers a handler to listen to warmup requests to the
/_ah/warmup request path with the
Creating your handler
Build any logic that you need to run into a handler that you map to respond to
/_ah/warmup request path. The following example builds on the previous
import webapp2 class MyWarmUpCode(webapp2.RequestHandler): """ This class handles the warmup request. You should add any code that you need to execute in the `get` method, such as populating caches, and ensure that you return a successful HTTP response. """ def get(self): # Your warmup logic goes here. # Return a successful response to indicate the logic completed. self.response.headers['Content-Type'] = 'text/plain' self.response.write('Warmup successful') # ... application = webapp2.WSGIApplication( [ ('/_ah/warmup', MyWarmUpCode), # Other handlers # ... ] )
The examples above provide a framework to work within. Next, you'll want to decide what logic belongs in your warmup request handlers. You might want to add values into memcache that your application will need. For example, if you build and store a list of the current trending articles for your site, building that list in the warmup and then storing the necessary data in memcache means that when a user request comes in, the application has everything ready to serve and no queries are performed on the user's request for that data, which results in a faster response.
- Learn more about Memcache