2011-08-30 9 views
5

He especificado un trabajo cron (para probar en desarrollo) pero parece que no se está ejecutando. ¿Cómo se puede asegurar de que los trabajos funcionen en producción?Cron jobs no en ejecución (en dev)

cron.yaml:

cron: 
- description: cron test gathering 
    url: /test/cron 
    schedule: every 2 minutes from 09:00 to 23:00 

app.yaml:

application: cron_test 
version: 1 
runtime: python 
api_version: 1 

handlers: 
- url: /.* 
    script: main.py 

main.py:

url_map = [ ('/test/cron', test.CronHandler), 
      ('/error', err.Err404Handler)] 

application = webapp.WSGIApplication(url_map, debug=False) 

def main(): 
    wsgiref.handlers.CGIHandler().run(application) 

if __name__ == "__main__": 
    main() 

FeedCron se define como:

class CronHandler(webapp.RequestHandler): 

    def get(self):  
     logging.info("NOTE: CronHandler get request"); 
     return None 

Esperaba ver la línea, "NOTA: CronHandler obtener solicitud", en los registros del motor de la aplicación. Estoy usando la aplicación GoogleAppEngineLauncher (versión: 1.5.3.1187) para iniciar & detener la aplicación.

Respuesta

3

D'Oh! Acabo de ver la letra pequeña en la documentación del SDK:

Cuando se utiliza el SDK de Python, el dev_appserver tiene una interfaz de administración que le permite ver los trabajos cron en/_ah/admin/cron.

El servidor de desarrollo no ejecuta automáticamente sus tareas cron. Usted puede usar la interfaz de tareas programadas o cron de su escritorio local para activar las URL de sus trabajos con curl o una herramienta similar.

+0

Entonces, ¿cómo activó el trabajo de Cron de Localehost? –

2

Tres años después las cosas han mejorado.

En primer lugar, la ruta a Cron Jobs es: http://localhost:8000/cron

El servidor de desarrollo (todavía) no se ejecuta automáticamente sus trabajos cron. Sin embargo, utilizando el enlace de arriba se puede hacer dos cosas:

  1. Haga clic en el botón "Ejecutar ahora", que en realidad desencadena la URL
  2. Vea el calendario, que debe asegurar de cuando los trabajos (hurra!) se ejecutará en producción
0

Estaba buscando una forma de simular trabajos cron en el servidor local de desarrollo. Como solución temporal, ejecuto localmente un script de Python que accede a la url de cron y desencadena la tarea de programación.

import urllib2 
import time 
while True: 
    print urllib2.urlopen("http://localhost:9080/cron/jobs/") 
    time.sleep(60) 

En mi caso, la url es http://localhost:9080/cron/jobs/ y ejecutarlo cada minuto. Espero que pueda ayudar.

Cuestiones relacionadas