# Copyright 2018 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import random import time from flask import Flask, redirect, url_for # [START trace_setup_python_configure] from opencensus.ext.stackdriver import trace_exporter as stackdriver_exporter import opencensus.trace.tracer def initialize_tracer(project_id): exporter = stackdriver_exporter.StackdriverExporter( project_id=project_id ) tracer = opencensus.trace.tracer.Tracer(exporter=exporter) return tracer # [END trace_setup_python_configure] app = Flask(__name__) @app.route('/', methods=['GET']) def root(): return redirect(url_for('index')) # [START trace_setup_python_quickstart] @app.route('/index.html', methods=['GET']) def index(): tracer = app.config['TRACER'] tracer.start_span(name='index') # Add up to 1 sec delay, weighted toward zero time.sleep(random.random() ** 2) result = "Tracing requests" tracer.end_span() return result # [END trace_setup_python_quickstart] if __name__ == '__main__': parser = argparse.ArgumentParser( description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter ) parser.add_argument( '--project_id', help='Project ID you want to access.', required=True) args = parser.parse_args() tracer = initialize_tracer(args.project_id) app.config['TRACER'] = tracer app.run()