Bina sistem pemprosesan tugas tak segerak yang cekap: menggunakan Celery Redis Django

王林
Lepaskan: 2023-09-27 12:01:58
asal
837 orang telah melayarinya

构建高效的异步任务处理系统:采用Celery Redis Django

Membina sistem pemprosesan tugas tak segerak yang cekap: menggunakan Celery Redis Django

Pengenalan:
Dalam aplikasi web moden, memproses tugas tak segerak adalah tugas yang sangat penting. Pemprosesan tugas tak segerak membolehkan kami mengasingkan tugas yang memakan masa daripada permintaan daripada aplikasi utama, meningkatkan pengalaman pengguna dan prestasi keseluruhan. Dalam artikel ini, kami akan memperkenalkan cara menggunakan rangka kerja Celery, Redis dan Django untuk membina sistem pemprosesan tugas tak segerak yang cekap.

1. Pengenalan kepada Saderi:
Saderi ialah rangka kerja baris gilir tugas yang diedarkan Python yang membolehkan kami mengagihkan tugas kepada pemproses atau pekerja dan berkomunikasi melalui baris gilir mesej. Saderi menyokong berbilang hujung belakang, seperti Redis, RabbitMQ, dsb., tetapi dalam artikel ini kami akan menggunakan Redis sebagai hujung belakang storan untuk baris gilir mesej.

2. Pengenalan kepada Redis:
Redis ialah sistem penyimpanan struktur data dalam memori sumber terbuka, yang boleh digunakan sebagai pangkalan data, cache dan perisian tengah mesej. Redis mempunyai ciri prestasi tinggi, kebolehskalaan dan ketahanan, dan sesuai untuk membina sistem pemprosesan tugas tak segerak yang cekap.

3. Konfigurasi Saderi dalam Django:

  1. Pasang Saderi dan Redis:
    Gunakan arahan pip untuk memasang perpustakaan Saderi dan Redis:

    rreee
  2. Konfigurasi tetapan Django.py:Dalam tetapan Django.py: projek , tambah item konfigurasi berikut:

    pip install Celery redis
    Salin selepas log masuk

  3. Buat contoh Saderi:

    Dalam direktori akar projek Django, buat fail celery.py dan tambah kandungan berikut:

    # Celery settings
    CELERY_BROKER_URL = 'redis://localhost:6379/0'
    CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
    Salin selepas log masuk

  4. Buat tugas tak segerak:

    Dalam projek Django, Cipta fail tasks.py dan tambah kandungan berikut:

    from __future__ import absolute_import, unicode_literals
    import os
    from celery import Celery
    
    # 设置默认的DJANGO_SETTINGS_MODULE环境变量
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')
    
    # 创建Celery实例
    app = Celery('your_project')
    
    # 从Django配置中加载Celery设置
    app.config_from_object('django.conf:settings', namespace='CELERY')
    
    # 自动从所有已注册的Django app中加载任务模块
    app.autodiscover_tasks()
    Salin selepas log masuk

  5. Cetus tugas tak segerak:

    Dalam fungsi paparan Django, cetuskan pelaksanaan tugas dengan memanggil kaedah kelewatan() tugas tak segerak:

    from __future__ import absolute_import, unicode_literals
    from your_project.celery import app
    
    # 定义异步任务
    @app.task
    def process_task(data):
     # 执行异步任务的逻辑处理
     result = process_data(data)
     return result
    Salin selepas log masuk

IV. Mulakan pekerja Saderi:

Masukkan arahan berikut dalam terminal untuk memulakan pekerja Saderi:

from django.shortcuts import render
from your_app.tasks import process_task

def your_view(request):
 if request.method == 'POST':
     data = request.POST.get('data')
     # 触发异步任务
     result = process_task.delay(data)
     # 返回任务结果给用户
     return render(request, 'result.html', {'result': result.id})
 else:
     return render(request, 'your_form.html')
Salin selepas log masuk

5. Pantau tugasan tak segerak:

Melalui alatan yang disediakan oleh Celery, kita boleh memantau dan mengurus pelaksanaan tugas tak segerak. Contohnya, anda boleh menggunakan alat Flower untuk memulakan antara muka web untuk memantau baris gilir tugas tak segerak:

celery -A your_project worker --loglevel=info
Salin selepas log masuk

6. Ringkasan:

Dalam artikel ini, kami memperkenalkan cara menggunakan rangka kerja Celery, Redis dan Django untuk membina tugas tak segerak yang cekap sistem pemprosesan. Dengan menggunakan Celery dan Redis, kami boleh dengan mudah memproses tugas yang memakan masa secara tidak segerak dan meningkatkan prestasi aplikasi dan pengalaman pengguna. Reka bentuk sistem pemprosesan tugas tak segerak ini boleh digunakan untuk pelbagai keperluan, seperti penghantaran e-mel latar belakang, pemprosesan imej, dll. Saya harap artikel ini akan membantu anda membina sistem pemprosesan tugas tak segerak yang cekap.

Atas ialah kandungan terperinci Bina sistem pemprosesan tugas tak segerak yang cekap: menggunakan Celery Redis Django. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!