Rumah > Artikel > pembangunan bahagian belakang > 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:
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!