2009-06-22 13 views

Respuesta

24

Yo diría "más o menos". Las cosas que debe recordar sobre las colas de tareas son:

1) un límite de operaciones por minuto/hora/día no es lo mismo que repetir algo a intervalos regulares. Incluso con el tamaño del cubo de fichas configurado en 1, no creo que tenga garantizado que esas repeticiones se espacien de manera uniforme. Depende de cuán serios son cuando dicen que la cola está implementada como un token bucket, y si se supone que esa declaración es una parte garantizada de la interfaz. Esto es laboratorios, nada está garantizado todavía.

2) si una tarea falla, se pone en cola. Si falla un trabajo cron, se registra y no se vuelve a intentar hasta que se venza nuevamente. Por lo tanto, un trabajo cron no se comporta de la misma manera que una tarea que agrega una copia de sí mismo y luego actualiza su feed, o como una tarea que actualiza su feed y luego agrega una copia de sí mismo.

Puede que sea posible simular tareas cron usando tareas, pero dudo que valga la pena. Si está intentando trabajar con un trabajo cron que tarda más de 30 segundos en ejecutarse (o alcanza cualquier otro límite de solicitud), puede dividir el trabajo en partes y tener un trabajo cron que agregue todas las piezas a un cola de tareas. Se habló un poco (¿en el blog de GAE?) Sobre urlfetch asíncrono, que podría ser la mejor forma de actualizar los canales RSS.

+1

asíncrono urlfetch hoy, ver http://code.google.com/appengine/docs/python/urlfetch/asynchronousrequests.html - pero no estoy seguro de cómo se sería la mejor forma de actualizar los canales RSS; tal vez tienes algo más en mente? –

+1

Por algún motivo, estaba anticipando algo que devolvería la devolución de una URL cuando llegaran los datos obtenidos. Sin embargo, no estoy seguro de dónde saqué esa idea, tal vez mi imaginación. Sin embargo, si está actualizando muchas fuentes RSS, necesita que las solicitudes HTTP sean paralelas, y las colas de tareas solo permiten tantas instancias simultáneas. Es muy posible que la API que señalas ya haga el trabajo. –

+4

Vale la pena agregar que también puede usar un trabajo cron para completar/administrar la cola de tareas, para que pueda tener ambas cosas. –

5

La forma en que lo veo es que si solo estoy analizando una fuente RSS, un trabajo de Cron podría ser lo suficientemente bueno. Si tengo que analizar X cantidad de fuentes RSS especificadas en tiempo de ejecución por un usuario o cualquier otra variable del sistema, entonces elegiría tareas todas las veces.

Solo digo esto porque en el pasado tuve que superar muchas búsquedas de twitter definidas por el usuario a intervalos regulares y con trabajos de Cron terminé haciendo un mal sistema Queuing para ejecutar las solicitudes que necesitaban ejecutarse - no lo hizo t escala, no ayudó eso y el intervalo más pequeño que puede tener un trabajo cron es de solo 1 minuto (tuve más búsquedas para realizar que minutos en el día).

Lo bueno de las tareas es que puedes darles una ETA, por lo que puedes decir que me gustaría que esto se ejecute en 47 segundos en el futuro, o me gustaría que esto se ejecute a las 12:30.

Cuestiones relacionadas