49 votes

Google App Engine - Files d'attente de tâches et tâches cron

Les dernières versions de Google App Engine version prend en charge une nouvelle Tâche de la File d'attente de l'API en Python. J'ai été en comparant les capacités de cette API vs déjà existantes au service Cron. Pour les travaux en arrière-plan qui ne sont pas initiées par l'utilisateur, telles que l'accaparement des flux RSS et l'analyse sur un intervalle de jours. Peut et doit la Tâche de la File d'attente de l'API être utilisé pour le non-initié par l'utilisateur tels que des demandes de cela?

24voto

Steve Jessop Points 166970

Je dirais "une sorte de". Les choses à retenir à propos des files d'attente de tâches sont:

1) une limite d'opérations par minute/heure/jour n'est pas la même chose que de répéter quelque chose à intervalles réguliers. Même avec la taille de paquet jeton à 1, je ne pense pas que vous avez la garantie que ces répétitions seront espacés de manière égale. Cela dépend de comment ils sont sérieux quand ils disent que la file d'attente est mise en œuvre comme un token bucket, et de savoir si la déclaration est censé être une garantie de l'interface. Ceci étant labs, rien n'est garanti encore.

2) si une tâche échoue, alors il est requeued. Si une tâche cron échoue, alors il est connecté et pas retentée jusqu'à ce que c'est dû à nouveau. Si une tâche cron ne se comportent pas de la même façon, que ce soit comme une tâche qui ajoute une copie de lui-même, puis actualise votre alimentation, ou comme une tâche qui rafraîchit votre alimentation, puis ajoute une copie de lui-même.

Il pourrait être possible pour se moquer des tâches cron à l'aide de tâches, mais je doute que ça en vaut la peine. Si vous essayez de travailler autour d'une tâche cron qui dure plus de 30 secondes à s'exécuter (ou touche les autres limite de requête), alors vous pouvez diviser le travail en morceaux, et ont une tâche cron qui ajoute toutes les pièces pour une tâche de la file d'attente. On a parlé plusieurs fois (dans le GAE blog?) sujet asynchrone urlfetch, qui pourrait être l'ultime meilleure façon de mettre à jour les flux RSS.

15voto

mcotton Points 684

Je ne comprenais pas très bien les différences avant de visionner la vidéo de Google I / O où ils l'expliquent. La source officielle est généralement la meilleure.

vidéo Youtube

diapositives de la présentation

5voto

Kinlan Points 7858

La façon dont je regarde c'est que si je suis juste de parser un flux RSS d'une tâche Cron peut-être assez bon. Si je dois analyser un nombre X de flux RSS spécifié au moment de l'exécution par un utilisateur ou de toute autre variable système, alors je voudrais choisir les tâches à chaque fois.

Je dis cela parce que, dans le passé, j'ai eu à l'exécution de nombreux défini par l'utilisateur des recherches twitter à intervalles réguliers et avec des tâches Cron j'ai fini de faire un très mauvais système de file d'attente pour exécuter les demandes qui doivent être ran - il n'a pas d'échelle, il n'a pas aidé et le plus petit intervalle qui une tâche cron peut être est à seulement 1 minute (j'ai eu plus de recherches à effectuer de minutes dans la journée).

La chose cool à propos de tâches que vous pouvez leur donner un ETA, de sorte que vous pouvez dire que j'aimerais que cela soit exécuté 47 secondes dans le futur, j'aimerais qu'elle soit exécutée à 12:30.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X