Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pertempuran praktikal: Menggunakan Celery, Redis dan Django untuk melaksanakan tugas tak segerak serentak

Pertempuran praktikal: Menggunakan Celery, Redis dan Django untuk melaksanakan tugas tak segerak serentak

王林
王林asal
2023-09-26 19:37:102114semak imbas

Pertempuran praktikal: Menggunakan Celery, Redis dan Django untuk melaksanakan tugas tak segerak serentak

Praktikal: Menggunakan Celery, Redis dan Django untuk melaksanakan tugas tak segerak serentak

Pengenalan:
Dalam pembangunan aplikasi web moden, untuk beberapa tugas lama (seperti pemprosesan data, menghantar e-mel, dll.), untuk meningkatkan pengguna Untuk meningkatkan pengalaman dan prestasi sistem, tugas tak segerak sering digunakan untuk mengendalikan tugasan ini. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Celery, Redis dan Django untuk membina penyelesaian tugas tak segerak serentak dan memberikan contoh kod khusus.

1. Pengenalan kepada Celery, Redis dan Django:

  1. Celery:
    Celery ialah baris gilir tugasan/perisian tengah mesej yang digunakan secara meluas dalam aplikasi Python. Ia menyediakan cara mudah untuk memisahkan tugas yang memakan masa daripada aplikasi utama untuk meningkatkan prestasi sistem.
  2. Redis:
    Redis ialah sistem storan struktur data dalam memori berprestasi tinggi yang boleh digunakan sebagai broker mesej untuk Celery. Saderi menggunakan Redis untuk menyimpan mesej tugasan untuk mencapai pelaksanaan tugasan tak segerak.
  3. Django:
    Django ialah rangka kerja pembangunan aplikasi web berasaskan Python yang menyediakan pelbagai fungsi dan pemalam. Kami boleh memanfaatkan struktur dan corak Django untuk mengatur dan mengurus tugas tak segerak serta disepadukan dengan Celery dan Redis.

2. Sediakan persekitaran:
Sebelum bermula, pastikan Python, Django, Celery dan Redis telah dipasang. Anda boleh menggunakan arahan pip untuk memasang. Contohnya adalah seperti berikut:

pip install django
pip install celery
pip install redis

3. Konfigurasikan Celery dan Redis:
Tambahkan konfigurasi berikut pada tetapan fail konfigurasi.py projek Django:

# Celery配置
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

# Redis配置
CACHES = {
    'default': {
        'BACKEND': 'redis_cache.RedisCache',
        'LOCATION': '127.0.0.1:6379',
        'OPTIONS': {
            'DB': 0,
            'PASSWORD': '',
            'PARSER_CLASS': 'redis.connection.HiredisParser'
        },
    }
}

4. Cipta tak segerak tugasan:
di suatu tempat di Django Cipta fail tasks.py dalam direktori aplikasi dan tulis kod berikut:

from celery import shared_task

@shared_task
def send_email(email):
    """
    发送邮件的异步任务
    """
    # 发送邮件的代码
    ...

5. Panggil tugas tak segerak:
Dalam fungsi paparan Django, panggil tugas tak segerak melalui kaedah kelewatan(). seperti berikut:

from .tasks import send_email

def send_email_view(request):
    # 获取需要发送邮件的用户邮箱
    email = request.GET.get('email')
    
    # 调用异步任务
    send_email.delay(email)
    
    # 返回响应
    return JsonResponse({'status': 'success'})

6. Mulakan Pekerja Saderi dan Pukul:
Dalam fail celery.py dalam direktori akar projek, tulis kod berikut:

from __future__ import absolute_import
import os
from celery import Celery

# 设置Django环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')

app = Celery('project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

Kemudian, jalankan arahan berikut dalam direktori akar projek untuk memulakan Pekerja Saderi dan Pukul:

celery -A project worker --loglevel=info
celery -A project beat --loglevel=info

7. Uji tugas tak segerak :
Tulis fungsi paparan ujian Django dan uji dengan memanggil tugas tak segerak Contohnya adalah seperti berikut:

from .tasks import send_email

def test_view(request):
    # 调用异步任务
    send_email.delay('test@example.com')
    
    # 返回响应
    return JsonResponse({'status': 'success'})

8 Ringkasan:
Artikel ini memperkenalkan cara menggunakan Saderi, Redis dan Django untuk melaksanakan tugas tak segerak serentak. Dengan mengkonfigurasi Celery dan Redis, tugasan lama boleh dilaksanakan secara tidak segerak untuk meningkatkan prestasi sistem dan pengalaman pengguna. Pada masa yang sama, contoh kod khusus diberikan untuk rujukan dan amalan pembaca. Dengan mempelajari dan mempraktikkan set penyelesaian ini, saya percaya pembaca boleh menggunakan tugas tak segerak serentak secara munasabah dalam projek mereka sendiri.

Atas ialah kandungan terperinci Pertempuran praktikal: Menggunakan Celery, Redis dan Django untuk melaksanakan tugas tak segerak serentak. 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