Caching de contenido estático (falso) que en realidad es dinámico en GAE para Python

En mi aplicación GAE tengo el siguiente controlador en app.yaml:

- url: /lang/strings.js
  script: js_lang.py

Entonces, una llamada a/lang/strings.js en realidad se asignará al controlador de solicitud js_lang.py que completa la respuesta comoapplication/javascript. Quiero que esta respuesta se almacene en caché en el navegador para que solo se llame al controlador de solicitudes de vez en cuando (por ejemplo, cuando "invalido" el caché importando/lang/strings.js?v=xxxx cuando implemente una nueva versión de la aplicación.

Para contenido estático normal, existe ladefault_expiration element, que es muy útil. Y da como resultado encabezados de respuesta http como este:

Expires: Fri, 01 Apr 2011 09:54:56 GMT
Cache-Control: public, max-age=600

Ok, la pregunta: ¿hay alguna manera fácil de devolver encabezados como este, sin tener que configurarlos explícitamente? Alternativamente, ¿hay un fragmento de código que acepte algunos parámetros básicos como "días" y produzca los encabezados http esperados?

Editar 12 abril 2011

Solucioné esto simplemente configurando los dos encabezadosExpires yCache-Control Me gusta esto

import datetime
thirty_days_in_seconds = 4320000
expires_date = datetime.datetime.now() + datetime.timedelta(days=30)
HTTP_HEADER_FORMAT = "%a, %d %b %Y %H:%M:00 GMT"        

self.response.headers["Expires"] = expires_date.strftime(HTTP_HEADER_FORMAT)
self.response.headers["Cache-Control"] = "public, max-age=%s" % thirty_days_in_seconds