Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Django Advanced: Panduan untuk Aplikasi Cekap Rangka Kerja Web Python

Django Advanced: Panduan untuk Aplikasi Cekap Rangka Kerja Web Python

WBOY
WBOYasal
2023-06-22 13:15:37672semak imbas

Dengan populariti aplikasi web, semakin ramai pembangun menggunakan bahasa Python dan rangka kerja webnya Django untuk membina aplikasi yang cekap. Artikel ini akan memperkenalkan beberapa teknik Django lanjutan untuk menjadikan aplikasi anda lebih cekap.

1. Gunakan caching untuk meningkatkan prestasi

Dalam aplikasi, sesetengah data hanya perlu dikemas kini dengan kerap tanpa menanyakan pangkalan data untuk setiap permintaan. Django mempunyai sistem caching terbina dalam dan menyokong pelbagai bahagian belakang caching, seperti Memcached, Redis, dsb. Anda boleh mengkonfigurasi bahagian belakang cache dan mendayakan cache dalam fail settings.py:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

MIDDLEWARE_CLASSES = [
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
]

Konfigurasi di atas menggunakan Memached sebagai bahagian belakang cache dan membolehkan caching dalam middleware.

2. Gunakan Saderi untuk tugas tak segerak

Dalam aplikasi, sesetengah tugasan tidak perlu dilaksanakan serta-merta dan boleh diproses secara tidak segerak di latar belakang, yang boleh meningkatkan prestasi aplikasi. Django boleh digabungkan dengan Celery untuk melaksanakan pemprosesan tugas tak segerak. Saderi ialah baris gilir tugas teragih paling popular Python Ia boleh mengendalikan sejumlah besar tugas dan menyokong berbilang baris gilir mesej.

Pasang Saderi:

pip install celery

Sediakan Saderi:

#settings.py
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/0'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'

# app/tasks.py
from celery import Celery
 
app = Celery('tasks')
 
@app.task
def add(x, y):
    return x + y

Konfigurasi di atas menggunakan Redis sebagai baris gilir mesej dan storan hasil, dan mentakrifkan tugas pengkomputeran. Mulakan Saderi:

celery -A proj worker -l info

3 Gunakan pertanyaan pangkalan data yang dioptimumkan

Dengan menggunakan teknik pengoptimuman pertanyaan, anda boleh mengurangkan operasi I/O pangkalan data dan dengan itu meningkatkan prestasi aplikasi.

  1. Kurangkan bilangan pertanyaan

Apabila berbilang objek perlu disoal, berbilang pertanyaan akan memakan banyak masa dan sumber. Anda boleh menggunakan select_related() untuk mengoptimumkan:

class Author(models.Model):
    name = models.CharField(max_length=200)

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.ForeignKey(Author)

#不优化
for book in Book.objects.all():
    print(book.author.name)

#优化
for book in Book.objects.select_related('author').all():
    print(book.author.name)
  1. Gunakan indeks

Apabila aplikasi menanyakan sejumlah besar rekod, menggunakan indeks boleh mengurangkan masa pertanyaan dengan ketara. Django menggunakan ORM untuk mengendalikan pangkalan data Anda boleh mentakrifkan indeks dengan menambahkan parameter db_index pada medan model:

class Book(models.Model):
    title = models.CharField(max_length=200, db_index=True)
    author = models.ForeignKey(Author, db_index=True)

4. Gunakan Django Debug Toolbar untuk nyahpepijat aplikasi

Django Debug Toolbar ialah pemalam pihak ketiga Boleh memberikan analisis prestasi aplikasi masa nyata dan maklumat penyahpepijatan.

Pasang dan konfigurasi Django Debug Toolbar:

rreee

Konfigurasi di atas mendayakan Django Debug Toolbar dan menambahkannya pada middleware. Apabila mengakses aplikasi dalam penyemak imbas, bar alat akan dipaparkan, dan anda boleh melihat maklumat seperti masa permintaan, pertanyaan SQL, cache, dll.

Ringkasan

Di atas ialah panduan untuk aplikasi rangka kerja Web Django yang cekap Dengan menggunakan caching, Celery, pengoptimuman pertanyaan dan Django Debug Toolbar, aplikasi boleh dibuat dengan lebih cekap. Sudah tentu, sebagai tambahan kepada teknik yang dinyatakan di atas, terdapat banyak kaedah pengoptimuman lain, yang perlu dipilih dan digunakan mengikut senario dan keperluan tertentu.

Atas ialah kandungan terperinci Django Advanced: Panduan untuk Aplikasi Cekap Rangka Kerja Web Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn