Final_Assignment_AWorld / examples /trace /instrument_fastapi.py
Duibonduil's picture
Upload 9 files
fb49ac2 verified
import os
import time
import threading
from aworld.trace.config import ObservabilityConfig
from aworld.trace.instrumentation.fastapi import instrument_fastapi
from aworld.trace.instrumentation.requests import instrument_requests
from aworld.logs.util import logger, trace_logger
import aworld.trace as trace
from aworld.utils.import_package import import_packages
import_packages(['fastapi', 'uvicorn']) # noqa
import fastapi # noqa
import uvicorn # noqa
os.environ["MONITOR_SERVICE_NAME"] = "otlp_example"
os.environ["ANT_OTEL_ENDPOINT"] = "https://antcollector.alipay.com/namespace/aworld/task/aworld/otlp/api/v1/metrics"
trace.configure(ObservabilityConfig(
metrics_provider="otlp",
metrics_backend="antmonitor"
))
instrument_fastapi()
instrument_requests()
app = fastapi.FastAPI()
@app.get("/api/hello")
async def hello():
return {"message": "Hello World"}
def invoke_api():
import requests
response = requests.get('http://127.0.0.1:7071/api/hello')
logger.info(f"invoke_api response={response.text}")
def main():
logger.info("main running")
with trace.span("test_fastapi") as span:
trace_logger.info("start invoke_api")
invoke_api()
if __name__ == "__main__":
server_thread = threading.Thread(
target=lambda: uvicorn.run(app, host="0.0.0.0", port=7071),
daemon=True
)
server_thread.start()
time.sleep(1)
main()
server_thread.join()