Skip to content

Commit e50c7a3

Browse files
authored
Fix lint and style issues and quickstart with ruff (#399)
1 parent 5dfc6b2 commit e50c7a3

File tree

3 files changed

+78
-57
lines changed

3 files changed

+78
-57
lines changed

samples/instrumentation-quickstart/app.py

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,41 +12,54 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
from random import randint, uniform
16-
import time
1715
import logging
16+
import time
17+
from random import randint, uniform
18+
1819
import requests
1920
from flask import Flask, url_for
20-
import setup_opentelemetry
21-
import gcp_logging
22-
23-
from opentelemetry.instrumentation.requests import RequestsInstrumentor
2421
from opentelemetry.instrumentation.flask import FlaskInstrumentor
22+
from opentelemetry.instrumentation.requests import RequestsInstrumentor
23+
24+
from gcp_logging import setup_structured_logging
25+
from setup_opentelemetry import setup_opentelemetry
2526

2627
# [START opentelemetry_instrumentation_main]
2728
logger = logging.getLogger(__name__)
2829

30+
# Initialize OpenTelemetry Python SDK and structured logging
31+
setup_opentelemetry()
32+
setup_structured_logging()
33+
2934
app = Flask(__name__)
35+
36+
# Add instrumentation
3037
FlaskInstrumentor().instrument_app(app)
3138
RequestsInstrumentor().instrument()
3239
# [END opentelemetry_instrumentation_main]
3340

41+
3442
# [START opentelemetry_instrumentation_handle_multi]
35-
@app.route('/multi')
43+
@app.route("/multi")
3644
def multi():
3745
"""Handle an http request by making 3-7 http requests to the /single endpoint."""
38-
subRequests = randint(3, 7)
39-
logger.info("handle /multi request", extra={'subRequests': subRequests})
40-
for _ in range(subRequests):
41-
requests.get(url_for('single', _external=True))
42-
return 'ok'
46+
sub_requests = randint(3, 7)
47+
logger.info("handle /multi request", extra={"subRequests": sub_requests})
48+
for _ in range(sub_requests):
49+
requests.get(url_for("single", _external=True))
50+
return "ok"
51+
52+
4353
# [END opentelemetry_instrumentation_handle_multi]
4454

55+
4556
# [START opentelemetry_instrumentation_handle_single]
46-
@app.route('/single')
57+
@app.route("/single")
4758
def single():
4859
"""Handle an http request by sleeping for 100-200 ms, and write the number of seconds slept as the response."""
4960
duration = uniform(0.1, 0.2)
5061
time.sleep(duration)
51-
return f'slept {duration} seconds'
62+
return f"slept {duration} seconds"
63+
64+
5265
# [END opentelemetry_instrumentation_handle_single]

samples/instrumentation-quickstart/gcp_logging.py

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,32 @@
1313
# limitations under the License.
1414

1515
import logging
16-
from pythonjsonlogger import jsonlogger
16+
1717
from opentelemetry.instrumentation.logging import LoggingInstrumentor
18+
from pythonjsonlogger import jsonlogger
19+
1820

1921
# [START opentelemetry_instrumentation_setup_logging]
20-
LoggingInstrumentor().instrument()
22+
def setup_structured_logging() -> None:
23+
LoggingInstrumentor().instrument()
2124

22-
logHandler = logging.StreamHandler()
23-
formatter = jsonlogger.JsonFormatter(
24-
"%(asctime)s %(levelname)s %(message)s %(otelTraceID)s %(otelSpanID)s %(otelTraceSampled)s",
25-
rename_fields={
26-
"levelname": "severity",
27-
"asctime": "timestamp",
28-
"otelTraceID": "logging.googleapis.com/trace",
29-
"otelSpanID": "logging.googleapis.com/spanId",
30-
"otelTraceSampled": "logging.googleapis.com/trace_sampled",
25+
log_handler = logging.StreamHandler()
26+
formatter = jsonlogger.JsonFormatter(
27+
"%(asctime)s %(levelname)s %(message)s %(otelTraceID)s %(otelSpanID)s %(otelTraceSampled)s",
28+
rename_fields={
29+
"levelname": "severity",
30+
"asctime": "timestamp",
31+
"otelTraceID": "logging.googleapis.com/trace",
32+
"otelSpanID": "logging.googleapis.com/spanId",
33+
"otelTraceSampled": "logging.googleapis.com/trace_sampled",
3134
},
32-
datefmt="%Y-%m-%dT%H:%M:%SZ",
33-
)
34-
logHandler.setFormatter(formatter)
35-
logging.basicConfig(
36-
level=logging.INFO,
37-
handlers=[logHandler],
38-
)
35+
datefmt="%Y-%m-%dT%H:%M:%SZ",
36+
)
37+
log_handler.setFormatter(formatter)
38+
logging.basicConfig(
39+
level=logging.INFO,
40+
handlers=[log_handler],
41+
)
42+
43+
3944
# [END opentelemetry_instrumentation_setup_logging]

samples/instrumentation-quickstart/setup_opentelemetry.py

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414

1515
import os
1616

17-
from opentelemetry import _logs as logs
1817
from opentelemetry import _events as events
18+
from opentelemetry import _logs as logs
1919
from opentelemetry import metrics, trace
2020
from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
2121
from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter
2222
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
23-
from opentelemetry.sdk._logs import LoggerProvider
2423
from opentelemetry.sdk._events import EventLoggerProvider
24+
from opentelemetry.sdk._logs import LoggerProvider
2525
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
2626
from opentelemetry.sdk.metrics import MeterProvider
2727
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
@@ -31,27 +31,30 @@
3131

3232

3333
# [START opentelemetry_instrumentation_setup_opentelemetry]
34-
resource = Resource.create(
35-
attributes={
36-
# Use the PID as the service.instance.id to avoid duplicate timeseries
37-
# from different Gunicorn worker processes.
38-
SERVICE_INSTANCE_ID: f"worker-{os.getpid()}",
39-
}
40-
)
41-
42-
# Set up OpenTelemetry Python SDK
43-
tracer_provider = TracerProvider(resource=resource)
44-
tracer_provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))
45-
trace.set_tracer_provider(tracer_provider)
46-
47-
logger_provider = LoggerProvider(resource=resource)
48-
logger_provider.add_log_record_processor(BatchLogRecordProcessor(OTLPLogExporter()))
49-
logs.set_logger_provider(logger_provider)
50-
51-
event_logger_provider = EventLoggerProvider(logger_provider)
52-
events.set_event_logger_provider(event_logger_provider)
53-
54-
reader = PeriodicExportingMetricReader(OTLPMetricExporter())
55-
meter_provider = MeterProvider(metric_readers=[reader], resource=resource)
56-
metrics.set_meter_provider(meter_provider)
34+
def setup_opentelemetry() -> None:
35+
resource = Resource.create(
36+
attributes={
37+
# Use the PID as the service.instance.id to avoid duplicate timeseries
38+
# from different Gunicorn worker processes.
39+
SERVICE_INSTANCE_ID: f"worker-{os.getpid()}",
40+
}
41+
)
42+
43+
# Set up OpenTelemetry Python SDK
44+
tracer_provider = TracerProvider(resource=resource)
45+
tracer_provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))
46+
trace.set_tracer_provider(tracer_provider)
47+
48+
logger_provider = LoggerProvider(resource=resource)
49+
logger_provider.add_log_record_processor(BatchLogRecordProcessor(OTLPLogExporter()))
50+
logs.set_logger_provider(logger_provider)
51+
52+
event_logger_provider = EventLoggerProvider(logger_provider)
53+
events.set_event_logger_provider(event_logger_provider)
54+
55+
reader = PeriodicExportingMetricReader(OTLPMetricExporter())
56+
meter_provider = MeterProvider(metric_readers=[reader], resource=resource)
57+
metrics.set_meter_provider(meter_provider)
58+
59+
5760
# [END opentelemetry_instrumentation_setup_opentelemetry]

0 commit comments

Comments
 (0)