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?
Réponses
Trop de publicités?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.
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.