job google flexible engine deploy appengine app google-app-engine cron

google-app-engine - google - deploy cron appengine



Google App Engine-Tareas de tareas frente a trabajos de Cron (3)

La forma en que lo veo es que si solo estoy analizando un canal 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 los trabajos de Cron terminé haciendo un muy mal sistema Queueing para ejecutar las solicitudes que necesitaban ejecutarse, no se escalaba, no ayudó eso y el intervalo más pequeño que puede tener un trabajo cron es de solo 1 minuto (tuve que realizar más búsquedas 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.

La última versión de Google App Engine admite una nueva API Task Queue en Python. Estaba comparando las capacidades de esta API con el servicio Cron ya existente. Para trabajos en segundo plano que no son iniciados por el usuario, como tomar una fuente RSS y analizarla en un intervalo diario. ¿Puede y debe utilizarse la API Task Queue para solicitudes no iniciadas por el usuario como esta?



Yo diría "más o menos". Las cosas para 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 ser posible simular trabajos de 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.