2011-02-13 16 views
5

Tengo una aplicación [Python] App Engine que crea múltiples tareas y las agrega a una cola de tareas personalizada. dev_appserver.py parece ignorar los parámetros de velocidad/programación que especifico en queue.yaml y ejecuta todas las tareas inmediatamente. Este es un problema [al menos para propósitos de desarrollo/prueba] ya que mis tareas llaman una url de velocidad de aceleración; La ejecución inmediata de todas las tareas infringe los límites de aceleración y me devuelve un montón de errores.Programación de tareas en AppEngine dev_appserver.py

¿Alguien sabe si la programación de tareas si dev_appserver.py está deshabilitada? No puedo encontrar nada que sugiera esto en los documentos de App Engine. ¿Alguien puede sugerir una solución alternativa?

Gracias.

Respuesta

4

Cuando su aplicación se ejecuta en el servidor de desarrollo, las tareas se ejecutan automáticamente en el momento apropiado al igual que en la producción.
Puede examinar y manipular las tareas desde la consola de desarrollador: http://localhost:8080/_ah/admin/taskqueue

Documentación parámetro Rate here

+1

Gracias por el enlace de documentación. "ejecutado automáticamente en el momento apropiado": esa no es mi experiencia. Por ejemplo, si especifico la tasa queue.yaml como '6/m' y bucket_size como 1, esperaría que se ejecutara una tarea cada 10 segundos; en cambio, todos son ejecutados inmediatamente. Entonces estoy preguntando si alguien más ha tenido una experiencia similar; si configuré queue.yaml incorrectamente o si tal vez hay un problema con la programación de la tarea dev_appserver. – Justin

+0

Estoy leyendo los documentos queue.yaml ahora. Veo que 6/m significa que "las tareas se procesarán a una velocidad de 6 veces por minuto"; pero no hay garantía de que sea cada 10 segundos. Pero, ¿cómo ayuda agregar una tasa de 10/s? ¿Esto no significa que obtienes 10 tareas por segundo [en lugar de una cada 10 segundos]? ¿O quiere decir que hay un campo separado 'rate_limit'? [no puedo ver uno] Gracias – Justin

+0

Ok, gracias. Luego volvemos a la pregunta original. En primer lugar, comencé con una tasa de 6/my 24 tareas, sin embargo, las 24 tareas se ejecutaron en un minuto. Entonces, esto me sugiere que la programación de tareas no está funcionando en dev_appserver.py.En segundo lugar, ¿alguien puede sugerir cómo configurar queue.yaml para que una tarea se procese cada diez segundos? [o al menos la velocidad no es más rápida que diez segundos] – Justin

0

no se utiliza para establecer límites superiores absolutos de procesamiento TaskQueue. De hecho, si se utiliza, por ejemplo:

rate: 10/s
bucket_size: 20

el procesamiento puede estallar hasta 20/s. Algo más útil sería:

max_concurrent_requests: 1

que establece el número máximo de ejecución de 1 a la vez.

Sin embargo, esto no impedirá la ejecución de tareas. Si está agregando varias Tareas por vez pero sabe que deben ejecutarse en otro momento, probablemente deba usar cuenta regresiva.

_countdown using deferred library
countdown using Task class

1

The documentation se encuentra: el servidor de desarrollo no parece apoyar la limitación de velocidad. (Esto is documented para el servidor de desarrollo Java, pero no para Python). Puedes demostrar esto pausando una cola dándole una tasa de 0/s, pero encontrarás que ejecuta tareas de todos modos. Cuando una aplicación de este tipo se carga a producción, se comporta como se esperaba.

Abrí un defect.

+0

Puede compartir el enlace al problema informado, por favor. Creo que esto no ha sido resuelto. – rds

+0

Está vinculado desde la palabra "defecto". –

Cuestiones relacionadas