def generate(): """ This generator progressively returns data to the browser. """ try: rk.extract_code(request.url) yield yield_json(output="Requesting session token...") rk.request_token() # store to the database User.from_rk(rk) yield yield_json(output="Accessing profile...") profile = rk.get_profile() items = list(rk.get_fitness_items()) nitems = len(items) yield yield_json(profile=profile, nitems=nitems, state='complete') raise StopIteration # FIXME pass this off to a celery task for n, item in enumerate(items): item = rk.get_fitness_item(item) yield yield_json(n=n, nitems=nitems) yield yield_json( output="Transfer complete. Terminating connection", state='complete') except StandardError as e: yield yield_json( output="CARRIER TERMINATED", error=e.message, state='failed') raise e