# Python Uygulamaları

`/admin/python-apps` tüm hesaplardaki her Python uygulamasını listeler (uygulama başına bir satır). Hesaba, runtime sürümüne, duruma (running / stopped / errored) göre filtre. Uygulama bazlı detay:

| Sekme | Kapsadığı |
|---|---|
| Genel Bakış | Sahip hesap, uygulama slug'ı, dinleme portu, runtime, process durumu, son hata, requirements.txt yolu, virtualenv yolu, gunicorn worker'ları |
| Ayarlar | Runtime sürümü (3.10 / 3.11 / 3.12), giriş noktası modülü, ortam değişkenleri (KEY=VALUE), worker sayısı (paket `python_workers_limit` ile sınırlı), maksimum bellek (paket `python_max_memory_mb` ile sınırlı) |
| Loglar | Uygulama stdout / stderr tail (son N satır), gunicorn access log, systemd unit journal |
| Aksiyonlar | Başlat / durdur / yeniden başlat, requirements kur (uzun süren, SSE stream), durumu sıfırla (yeniden başlatmadan "errored" bayrağını temizler) |

Agent aktivasyon sırasında uygulama başına systemd unit + nginx reverse-proxy snippet sağlar. Paketin `max_python_apps` değeri bir hesabın açabileceği uygulama sayısını sınırlar — `0` sınır yok demektir; sınırın bir fazlası `403 PYTHON_APP_LIMIT` ile reddedilir.

**Domain bağlama.** Uygulamanın domain'i, oluşturulduğu hesaba zaten ait olmalıdır — birincil domain, addon domain ya da alt alan adı. Başka bir ad (başka bir hesabın domain'i ve sunucunun kendi hostname'i dahil) hem oluşturmada hem güncellemede `404 DOMAIN_NOT_FOUND` ile reddedilir; önce domain hesaba eklenir. Kural admin ve API çağrıları için de geçerlidir: uygulamanın yazdığı vhost o adı kimin sunacağını belirler.

**Ortam değişkenleri.** Uygulamanın değişkenleri tek bir küme olarak kaydedilir. Okunamadıklarında sekme **Yeniden dene** düğmeli bir hata görünümü gösterir ve Kaydet kapalı kalır — aksi hâlde kayıt, saklı her değişkenin yerine ekrandakileri koyardı. Node.js uygulamaları sayfası da aynı davranır.

**Kullanılan endpoint'ler:** `GET /accounts/{u}/python-apps`, `POST /accounts/{u}/python-apps`, `GET/PUT/DELETE /accounts/{u}/python-apps/{app}`, `POST /accounts/{u}/python-apps/{app}/{start,stop,restart}`, `POST /accounts/{u}/python-apps/{app}/install-requirements`, `GET /accounts/{u}/python-apps/{app}/logs`.

---
