Pengaturcaraan pelayan Python: Melaksanakan baris gilir tugas menggunakan Celery

WBOY
Lepaskan: 2023-06-18 17:37:40
asal
1333 orang telah melayarinya

Python ialah bahasa pengaturcaraan serba boleh yang melaluinya kami boleh membangunkan pelbagai jenis aplikasi, termasuk aplikasi bahagian pelayan. Tidak seperti bahasa pengaturcaraan lain, Python boleh menyelesaikan pelbagai tugas pembangunan aplikasi biasa melalui beberapa perpustakaan dan rangka kerja siap sedia.

Dalam artikel ini, kami akan menumpukan pada baris gilir tugas dalam pengaturcaraan pelayan Python. Barisan tugasan ialah konsep yang sangat biasa dalam pembangunan aplikasi sebelah pelayan dan boleh membantu kami melaksanakan tugas yang memakan masa secara tidak segerak dengan cara yang boleh dipercayai. Artikel ini akan memperkenalkan perpustakaan Python yang sangat popular, Celery, dan cara menggunakan Celery untuk melaksanakan baris gilir tugas dalam pembangunan pelayan Python.

Celery ialah perpustakaan Python untuk mengendalikan baris gilir tugas yang diedarkan. Pada terasnya, Celery ialah baris gilir tugas yang boleh melaksanakan tugasan yang memakan masa sekatan secara tak segera daripada baris gilir tanpa menyekat pelayan daripada memproses permintaan lain. Saderi menyokong pelbagai bahagian belakang, seperti Redis, MongoDB dan pangkalan data lain Ia menyediakan beberapa fungsi lanjutan, seperti penjejakan hasil tugas, keutamaan tugas, kumpulan tugas dan tamat masa tugas.

Sebelum anda mula menggunakan Celery, anda perlu memasang perpustakaan Celery. Memasang dalam Python menggunakan pip adalah sangat mudah.

pip install celery
Salin selepas log masuk

Selepas pemasangan selesai, kita boleh mula menggunakan Celery dalam Python.

Pertama, kita perlu mentakrifkan fungsi tugas. Dalam Celery, fungsi tugas mesti dihiasi dengan penghias @celery.task. Berikut ialah contoh fungsi tugas:

from celery import Celery

app = Celery('tasks', broker='redis://localhost:6379/0')

@app.task
def add(x, y):
    return x + y
Salin selepas log masuk

Dalam kod di atas, kami mencipta objek Saderi bernama "tugas" dan memautkannya dengan baris gilir Redis. Seterusnya, tentukan fungsi tugas "tambah", yang menerima dua parameter x dan y dan mengembalikan jumlahnya. Penghias @app.task menunjukkan bahawa fungsi tersebut ialah fungsi tugas Saderi.

Kini kita boleh menambah tugasan pada baris gilir dan Celery akan melaksanakannya secara tidak segerak dan tidak menyekat pelayan semasa pelaksanaan.

result = add.delay(4, 4)  # 将add任务添加到队列
print(result.get())  # 获取任务结果,这将阻塞直到任务完成
Salin selepas log masuk

Dalam kod di atas, kami menggunakan kaedah async_result.get() untuk mendapatkan hasil tugasan daripada baris gilir tugas. Selepas melaksanakan tugas secara tidak segerak, aplikasi kami boleh meneruskan memproses permintaan tanpa menyekat.

Selain melaksanakan tugas secara tidak segerak, Celery juga menyediakan beberapa ciri lanjutan lain. Sebagai contoh, kita boleh menetapkan tamat masa untuk tugasan dan membatalkannya sebelum ia selesai. Kami juga boleh mengumpulkan tugasan untuk mengurus pelbagai tugasan yang berkaitan.

Dalam artikel ini, kami menggariskan cara melaksanakan baris gilir tugas tak segerak dalam pengaturcaraan pelayan Python menggunakan Celery. Walaupun artikel ini hanya memperkenalkan fungsi asas Saderi, Saderi sangat berkuasa dan boleh membantu kami menguruskan tugas tak segerak kami dengan lebih mudah. Jika anda seorang pembangun pelayan Python, adalah sangat penting untuk belajar menggunakan Celery.

Atas ialah kandungan terperinci Pengaturcaraan pelayan Python: Melaksanakan baris gilir tugas menggunakan Celery. 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