Untuk aplikasi Python menggunakan Django atau Flask pada uWSGI, impor agen Application Real-Time Monitoring Service (ARMS) untuk Python di file entri aplikasi sebelum memulai. Selain itu, tambahkan lazy-apps ke file konfigurasi uWSGI.
Prasyarat
ARMS Agent untuk Python telah diinstal. Untuk informasi lebih lanjut, lihat dokumentasi instalasi ARMS Agent untuk Python.
Prosedur
Tambahkan baris berikut ke file uWSGI untuk mengimpor agen Python:
from aliyun.opentelemetry.instrumentation.auto_instrumentation import sitecustomizeUbah metode pemuatan aplikasi uWSGI dengan mengaktifkan mode startup
lazy-apps. Contoh:uwsgi --http :8000 --wsgi-file app.py --callable application --master --enable-threads --threads 2 --processes 4 --lazy-appsCatatanHilangkan awalan perintah
aliyun-instrument.
Contoh file konfigurasi:
[uwsgi]
http = :8000
wsgi-file = /python-demo/django-demo/myproject/myproject/wsgi.py
callable = application
# Tentukan lokasi file socket
socket = /python-demo/django-demo/myproject/wsgi.sock
# Atur izin file socket
chmod-socket = 660
# Pengaturan terkait proses
master = true
enable-threads = true
threads = 4
processes = 4
# Aktifkan lazy-apps
lazy-apps = truelazy-apps adalah opsi konfigurasi di uWSGI yang mengontrol cara modul aplikasi dimuat. Saat lazy-apps disetel ke true, uWSGI memuat aplikasi setelah setiap proses pekerja dimulai. Secara default, uWSGI memuat aplikasi saat proses master dimulai.
Efek dari Mengaktifkan lazy-apps:
Isolasi Memori: Setiap proses pekerja memuat aplikasi dalam konteksnya sendiri, sehingga status tertentu di berbagai proses tidak saling mengganggu.
Reload Dinamis: Dalam Mode Pengembangan, pembaruan kode langsung menjadi lebih mudah karena setiap proses pekerja memuat ulang aplikasi saat startup tanpa perlu me-restart seluruh proses master.
Penghindaran Masalah Status Global: Jika variabel global digunakan dalam aplikasi, setiap proses pekerja akan memiliki statusnya sendiri saat
lazy-appsdiaktifkan, mengurangi masalah yang disebabkan oleh status bersama.
Efek dari Tidak Mengaktifkan lazy-apps:
Berbagi Status Global: Jika variabel global digunakan dalam aplikasi, variabel ini dibagikan di semua proses pekerja, yang dapat menyebabkan perilaku yang tidak terduga.
Kecepatan Startup: Karena semua proses pekerja memuat aplikasi saat proses master dimulai, kecepatan startup keseluruhan mungkin relatif lebih cepat, terutama saat memulai sejumlah besar proses pekerja, yang bisa lebih cepat daripada memuat aplikasi satu per satu untuk setiap proses.
Perubahan Kode Langsung: Tanpa
lazy-apps, jika perubahan kode dilakukan, seluruh proses uWSGI harus di-restart agar perubahan diterapkan, bukan hanya me-restart satu proses pekerja.