2009-07-25 5 views
2

Dans le code des files d'attente de tâches est exécuté pour se connecter au côté serveur via URL Fetch. Mon fichier queue.yaml.GAE Tâche Files d'attente comment faire le retard?

queue: 
- Name: default 
    rate: 10/m 
    bucket_size: 1 

Dans de tels réglages, Tusk a effectué simultanément tout à la fois. La spécificité est que, entre les demandes devrait être retardé au moins 5 sec. La tâche doit effectuer sur scène avec une différence> 5 sec. (mais n'est pas parallèle).

Quelles sont les valeurs définies dans queue.yaml?

Répondre

3

Vous ne pouvez pas spécifier de délais minimum entre les tâches dans queue.yaml, actuellement; vous devriez le faire (en partie) dans votre propre code. Par exemple, si vous spécifiez une taille de compartiment de 1 (pour que plusieurs tâches ne soient jamais exécutées en même temps) et que les tâches s'exécutent pendant au moins 5 secondes (obtenez un start=time.time() au début, time.sleep(time.time()-(5+start)) à la fin). devrait marcher. Si ce n'est pas le cas, demandez à chaque tâche d'enregistrer l'horodatage dans le magasin et, au début, de vérifier si la dernière tâche s'est terminée il y a moins de 5 secondes et, dans ce cas, de terminer immédiatement.

1

L'autre façon pourrait être stocker les données de la tâche dans la table. Dans votre file d'attente de tâches, ajoutez un paramètre id. Récupère la première tâche de la table et passe son servlet de traitement de la file d'attente de l'id à la tâche. Dans servlet à la fin de retard pendant 5 secondes et feth prochaine tâche, passez son id et .... ainsi de suite.