Kemahiran pembangunan coroutine tak segerak: merealisasikan penghantaran kod pengesahan SMS yang cekap

WBOY
Lepaskan: 2023-12-02 14:16:02
asal
862 orang telah melayarinya

Kemahiran pembangunan coroutine tak segerak: merealisasikan penghantaran kod pengesahan SMS yang cekap

Dalam era Internet mudah alih, kod pengesahan SMS telah menjadi langkah yang perlu untuk pendaftaran pengguna, log masuk dan mendapatkan kata laluan. Walau bagaimanapun, menghantar kod pengesahan SMS sentiasa menjadi kesukaran utama dalam pembangunan, terutamanya dalam senario konkurensi tinggi, yang sering membawa kepada penurunan dalam prestasi sistem. Untuk menyelesaikan masalah ini, artikel ini memperkenalkan teknik pembangunan coroutine tak segerak dan menyediakan contoh kod khusus untuk mencapai penghantaran kod pengesahan SMS yang cekap.

Pemahaman tentang coroutine tak segerak

Coroutine tak segerak ialah sejenis idea pengaturcaraan serentak Dalam mod pengaturcaraan linear tradisional, atur cara berjalan dalam susunan tertentu, iaitu, atur cara perlu menunggu selesai langkah sebelumnya sebelum ia. boleh meneruskan. Idea coroutine tak segerak adalah untuk membahagikan keseluruhan program kepada berbilang aliran tugasan bebas ini boleh dilaksanakan secara serentak. Kemajuan satu aliran tugas tidak akan menjejaskan kemajuan pelaksanaan aliran tugas yang lain.

Kelebihan coroutine tak segerak

Berbanding dengan model pengaturcaraan linear tradisional, coroutine tak segerak mempunyai kelebihan berikut:

  1. Konkurensi tinggi: semua aliran tugas boleh dilaksanakan serentak, memanfaatkan sepenuhnya sumber daya sistem dan penambahbaikan.
  2. Kecekapan tinggi: Dalam coroutine tak segerak, pelaksanaan satu aliran tugasan tidak perlu menunggu penyelesaian aliran tugas lain, dengan itu mengurangkan masa menunggu dan meningkatkan kecekapan pelaksanaan.
  3. Overhed rendah: Coroutine tak segerak tidak perlu membuat utas untuk mengendalikan tugasan serentak, jadi mereka mempunyai overhed yang lebih sedikit daripada utas tradisional dan mempunyai penggunaan sumber sistem yang lebih tinggi.

Kes Praktikal: Melaksanakan Penghantaran Kod Pengesahan SMS yang Cekap

Dalam pembangunan aplikasi Internet mudah alih, kod pengesahan SMS sering digunakan untuk mengesahkan nombor telefon mudah alih pengguna. Walau bagaimanapun, memandangkan penghantaran kod pengesahan SMS adalah operasi yang memakan masa, jika model pengaturcaraan linear tradisional digunakan, ia akan membawa kepada kemerosotan prestasi sistem dengan mudah. Oleh itu, kita boleh menggunakan idea coroutine tak segerak untuk menguraikan proses penghantaran kod pengesahan SMS kepada berbilang aliran tugas untuk meningkatkan kapasiti pemprosesan dan pemprosesan sistem.

Untuk menggunakan bahasa Python untuk melaksanakan perkhidmatan penghantaran kod pengesahan SMS yang cekap, anda perlu memasang perpustakaan aiohttp terlebih dahulu. Dengan menggunakan perpustakaan aiohttp, kami boleh membuat coroutine tak segerak dan melaksanakan penghantaran serentak kod pengesahan SMS.

Contoh kod:

import asyncio
import aiohttp

async def send_message(phone_number: str, code: str) -> str:
    api_key = "" # 填写短信API的Key
    url = "" # 填写短信发送接口URL
    data = {
        "apikey": api_key,
        "mobile": phone_number,
        "text": f"【应用名称】您的验证码是{code}。如非本人操作,请勿泄露。"
    }
    async with aiohttp.ClientSession() as session:
        async with session.post(url, data=data) as resp:
            result = await resp.json()
            return result["code"]

async def send_verification_code(phone_number: str) -> str:
    code = generate_verification_code() # 生成短信验证码
    await asyncio.sleep(5) # 模拟短信发送需要5秒钟
    result = await send_message(phone_number, code) # 发送短信验证码
    return result

async def main():
    tasks = [send_verification_code("13000000000") for _ in range(10)] # 并发发送10条短信验证码
    results = await asyncio.gather(*tasks)
    print(results)

if __name__ == "__main__":
    asyncio.run(main())
Salin selepas log masuk

Kod di atas melaksanakan proses penghantaran kod pengesahan SMS coroutine tak segerak Langkah-langkah pelaksanaan khusus adalah seperti berikut:

  1. Gunakan perpustakaan aiohttp untuk mencipta fungsi coroutine tak segerak untuk pengesahan SMS send_message(). .
  2. Dalam fungsi coroutine tak segerak send_verification_code(), hasilkan kod pengesahan SMS dan gunakan asyncio.sleep() untuk mensimulasikan masa yang diperlukan untuk menghantar SMS.
  3. Dalam fungsi coroutine tak segerak send_verification_code(), panggil fungsi send_message() dan hantar kod pengesahan SMS.
  4. Gunakan asyncio.gather() untuk melaksanakan fungsi send_verification_code() secara serentak dan mencetak keputusan pelaksanaan.

Melalui pelaksanaan kod di atas, kita dapati bahawa walaupun 10 kod pengesahan SMS dihantar pada masa yang sama, kelajuan pelaksanaan program tidak akan terjejas, dan sumber sistem boleh digunakan sepenuhnya untuk mencapai pengesahan SMS yang cekap penghantaran kod.

Kesimpulan

Artikel ini memperkenalkan kemahiran pembangunan coroutine tak segerak dan menyediakan contoh kod khusus untuk mencapai penghantaran kod pengesahan SMS yang cekap. Idea coroutine tak segerak boleh meningkatkan kuasa pemprosesan dan daya pemprosesan sistem dengan berkesan, terutamanya dalam senario konkurensi tinggi, ia boleh menunjukkan kelebihannya. Oleh itu, dalam pembangunan aplikasi Internet mudah alih, kita boleh menggunakan idea coroutine tak segerak untuk mencapai pemprosesan perniagaan yang cekap.

Atas ialah kandungan terperinci Kemahiran pembangunan coroutine tak segerak: merealisasikan penghantaran kod pengesahan SMS yang cekap. 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