پرش به مطلب اصلی

پایتون

نصب​

pip install "sentry-sdk[django]" # یا [flask]، [fastapi]، [celery]، یا فقط sentry-sdk

مقداردهی اولیه​

import sentry_sdk

sentry_sdk.init(
dsn=os.environ["SENTRY_DSN"],
environment=os.environ.get("ENV", "production"),
release=os.environ.get("APP_VERSION"),

traces_sample_rate=0.2, # ردیابی کارایی
profiles_sample_rate=1.0, # پروفایلینگ (از تراکنش‌های نمونه‌برداری‌شده)
enable_logs=True, # لاگ ساخت‌یافته

send_default_pii=False,
attach_stacktrace=True,
)

SDK به‌طور خودکار جنگو، فلسک، FastAPI، Celery، Redis، SQLAlchemy، requests و موارد دیگر را تشخیص می‌دهد. استثناهای مدیریت‌نشده بدون هیچ کد اضافه‌ای ثبت می‌شوند.

جنگو​

sentry_sdk.init() را در انتهای settings.py (یا در wsgi.py/asgi.py پیش از ساخت شیء application) صدا بزنید. چیز دیگری لازم نیست؛ میان‌افزار، خطای ویوها، اسپن‌های ORM و رندر قالب خودکار ابزارگذاری می‌شوند.

Celery​

مقداردهی را داخل هندلر سیگنال celeryd_init/worker_process_init انجام دهید تا هر ورکر فورک‌شده کلاینت خودش را داشته باشد:

from celery.signals import celeryd_init

@celeryd_init.connect
def init_sentry(**_kwargs):
sentry_sdk.init(dsn=..., traces_sample_rate=0.2)

ثبت دستی​

with sentry_sdk.push_scope() as scope:
scope.set_tag("area", "billing")
scope.set_context("invoice", {"id": invoice.id, "total": invoice.total})
sentry_sdk.capture_exception(exc)

sentry_sdk.capture_message("Reconciliation drifted", level="warning")
sentry_sdk.set_user({"id": user.id, "username": user.username})

لاگ​

import logging

logger = logging.getLogger(__name__)
logger.warning("retrying payment", extra={"order_id": order.id, "attempt": 3})

با enable_logs=True رکوردهای لاگ کتابخانهٔ استاندارد به ارورا فرستاده می‌شوند، فیلدهای extra به‌صورت ویژگی‌های نوع‌دار حفظ می‌شوند و به ترِیس فعال برچسب می‌خورند. نگاه کنید به لاگ‌ها.

مانیتور کران​

from sentry_sdk.crons import monitor

@monitor(monitor_slug="nightly-invoices")
def nightly_invoices():
...

با Celery beat هم می‌توانید تسک را دکوریت کنید یا مستقیم از sentry_sdk.crons.capture_checkin استفاده کنید. نگاه کنید به مانیتورینگ کران.

متریک​

sentry_sdk.metrics.incr("orders.created", 1, tags={"plan": "pro"})
sentry_sdk.metrics.distribution("orders.total_toman", order.total, unit="none")

نگاه کنید به متریک.

رصد هوش مصنوعی​

اگر از یکپارچه‌سازی‌های OpenAI، Anthropic یا LangChain استفاده می‌کنید، SDK اسپن‌های gen_ai.* می‌فرستد و ارورا آن‌ها را به رصد هوش مصنوعی می‌برد — اجرای ایجنت‌ها، مصرف توکن به تفکیک مدل و فراخوانی ابزارها — بدون تنظیم اضافه‌ای جز traces_sample_rate.

بررسی نهایی​

sentry_sdk.capture_exception(Exception("Errora smoke test"))