2010-10-25 13 views
5

J'utilise mapreduce de Google App Engine pour analyser certaines données. Je génère quelques compteurs que je voudrais créer un graphique Google simple dans mon done_callback. Comment accéder aux compteurs résultants à partir du rappel?Dans la version python de mapreduce Google App Engine, comment accéder aux compteurs à partir de done_callback?

#The map method 
def count_created_since(entity): 
    now = datetime.datetime.now() 
    delta = now-entity.created 

    #analyze last 12 weeks 
    for x in range(12): 
    start = 7*x 
    stop = 7*(x+1) 

    if delta.days >= start and delta.days < stop: 
     #The counters 
     yield op.counters.Increment(str(x)+" weeks ago") 


def my_callback(request): 
    # fetch counter results to create a simple Google chart url 

Répondre

5

Vous pouvez accéder aux compteurs de par un attribut MapreduceState'scounter_map.

from mapreduce import model 
state = model.MapreduceState.get_by_job_id(your_job_id) 
# counters live in state.counters_map 

Il y avait un discussion sur la liste de diffusion un mois il y a sur l'accès aux compteurs.

+0

Merci, mais comment puis-je déterminer le job_id dans le rappel? Est-il passé en paramètre via le POST au rappel? – Chris

+0

Il est transmis en tant que paramètre nommé 'job_id'. –

+0

@Chris @Robert, je ne sais pas comment il a été passé quand vous répondez à cette question mais aujourd'hui il est passé dans l'en-tête dans une variable appelée ** Mapreduce-Id ** –