پایتون
نصب
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"))