2010-05-21 6 views
2

Je développe un site pour un client qui envoie régulièrement des notifications par email, pour faciliter cela. J'ai un travail cron qui commence à 2h du matin pour commencer à programmer des tâches individuelles pour envoyer les notifications. Tout va bien et fonctionne parfaitement avec des tâches programmées pour être exécutées immédiatement, mais pour aider au développement et aux tests, j'ai écrit des applications CLI qui utilisent ipython et remote_api_stub pour interagir avec mon application et ma banque de données, lorsque je planifie des tâches en ligne de commande comme ceci:Exécution de la file d'attente de tâches

task = taskqueue.Task(url='/admin/tasks/email', params={'email': email, 'type': notif.type}) 
task.add("email") 

Je reçois un délai d'une heure pour l'exécution de la tâche. Pourquoi est-ce? et y a-t-il un moyen d'exécuter la tâche immédiatement?

Répondre

3

Il semble y avoir un bug lié au fuseau horaire dans le SDK qui provoque la planification de l'ETA pour les tâches créées via l'API à distance une heure après leur ajout. Si vous définissez explicitement le compte à rebours sur 0, la tâche doit être planifiée pour s'exécuter immédiatement.

+0

Merci mais en utilisant 'task = taskqueue.Task (url = '/ admin/tâches/email', params = {'email': email, 'type': notif.type}, compte à rebours = 0)' plannings toujours en 1 heure ': /' –

+1

Essayez plutôt de définir l'ETA sur le passé. –

2

Si vous voulez l'exécuter immédiatement, il suffit d'ouvrir l'URL dans un navigateur. Pourquoi traîner avec des files d'attente de tâches?

+0

Merci, mais les tâches sont appelées avec "POST" pas "GET", donc pas vraiment une solution. –

+2

Mais une tâche est juste une URL qui est gérée par un RequestHandler dans votre application, et vous pouvez facilement le faire exécuter le même code indépendamment du fait qu'il soit appelé avec GET ou POST. –

Questions connexes