Rumah >pembangunan bahagian belakang >Tutorial Python >Pengaturcaraan pelayan Python: Cara mengendalikan muat naik fail yang cekap

Pengaturcaraan pelayan Python: Cara mengendalikan muat naik fail yang cekap

PHPz
PHPzasal
2023-06-18 08:31:462745semak imbas

Dengan pembangunan pengkomputeran awan dan popularisasi aplikasi, aplikasi Web telah menarik lebih banyak perhatian, yang juga telah menggalakkan pembangunan pengaturcaraan pelayan. Muat naik fail sentiasa menjadi pautan yang sangat penting dalam pembangunan aplikasi web Terutamanya dalam laman web besar atau sistem peringkat perusahaan, pemprosesan muat naik fail menduduki sebahagian besar sumber. Python adalah bahasa pengaturcaraan yang sangat popular Ia mempunyai kelebihan yang mudah dipelajari, berciri penuh, dan kecekapan pembangunan yang tinggi Terutamanya dalam bidang pengaturcaraan pelayan web, ia mempunyai keupayaan pemprosesan yang diedarkan, jadi ia telah menjadi pilihan pertama. daripada banyak pembangun web. Artikel ini akan memperkenalkan cara menggunakan Python untuk pemprosesan muat naik fail yang cekap, termasuk cara memilih kaedah muat naik fail, cara mengendalikan muat naik fail besar, cara meningkatkan kecekapan muat naik fail, dsb.

1 Pilih kaedah muat naik fail

Secara amnya terdapat dua cara untuk memuat naik fail: muat naik fail tunggal dan muat naik berbilang fail. Muat naik fail tunggal sesuai untuk pengguna yang hanya perlu memuat naik satu fail Ia biasanya dilaksanakan menggunakan teg input dalam HTML dan atribut type="file". Muat naik berbilang fail sesuai untuk situasi di mana pengguna perlu memuat naik berbilang fail Ia biasanya dilaksanakan menggunakan kotak pemilihan berbilang fail atau pemalam JavaScript dalam HTML5.

Untuk satu muat naik fail, anda boleh menggunakan modul cgi terbina dalam Python untuk mengendalikan permintaan muat naik fail dengan mudah Kod khusus adalah seperti berikut:

import cgi
form = cgi.FieldStorage()
fileitem = form['file']

if fileitem.filename:
    with open('uploaded_file.txt', 'wb') as f:
        f.write(fileitem.file.read())
        f.close()
    print '上传文件 "%s" 成功!' % fileitem.filename
else:
    print '没有选择文件!'

Untuk beberapa muat naik fail, anda perlu. gunakan perpustakaan pihak ketiga, seperti kelalang, django, dsb. Mengambil kelalang sebagai contoh, kod khusus adalah seperti berikut:

from flask import request
@app.route('/upload', methods=['POST'])
def upload():
    uploaded_files = request.files.getlist("file[]")
    for file in uploaded_files:
        file.save(file.filename)
    return '上传文件成功!'

Perlu diingat bahawa untuk muat naik fail, kita perlu mempertimbangkan faktor seperti jenis fail, saiz fail, nama fail, dll., dan keperluan untuk melakukan pengesahan dan pemprosesan tertentu pada fail yang dimuat naik.

2. Memproses muat naik fail yang besar

Untuk muat naik fail yang besar, kami perlu mempertimbangkan beberapa isu, seperti had memori, lebar jalur pelayan, dsb. Dalam Python, anda boleh menggunakan rangka kerja seperti Werkzeug atau Tornado untuk mengendalikan muat naik fail yang besar.

Ambil Werkzeug sebagai contoh Ia menyediakan mekanisme yang dipanggil "Muat Naik Langsung", yang boleh membaca fail yang dimuat naik ke pelayan sekeping demi sekeping dan menyimpan fail ke cakera keras selepas bacaan selesai. Ia sangat mudah untuk dilaksanakan, kod khusus adalah seperti berikut:

from werkzeug.utils import secure_filename
from werkzeug.wsgi import LimitedStream

@app.route('/upload', methods=['POST'])
def upload():
    file = request.files['file']
    filename = secure_filename(file.filename)
    size_limit = 1024 * 1024 * 1024 # 限制文件大小为1G
    stream = LimitedStream(file.stream, size_limit)
    with open(filename, 'wb') as f:
        while True:
            chunk = stream.read(1024 * 1024) # 每次读取1M
            if not chunk:
                break
            f.write(chunk)
    return '上传文件成功!'

Kaedah ini sangat berguna untuk memuat naik fail besar, tetapi perlu diingat bahawa hanya 1M data boleh dibaca pada satu masa, jadi jika fail yang dimuat naik terlalu besar, anda perlu Baca beberapa kali, yang boleh menyebabkan penurunan kecekapan penghantaran.

3. Tingkatkan kecekapan muat naik fail

Untuk meningkatkan kecekapan muat naik fail, anda perlu mempertimbangkan aspek berikut:

  1. Gunakan keupayaan pemprosesan serentak yang tinggi di web pelayan, seperti Gunakan pelayan proksi terbalik seperti Nginx atau Apache untuk menghantar permintaan muat naik fail ke pelayan Python belakang untuk diproses.
  2. Tetapkan penimbal yang lebih besar untuk menggunakan blok memori yang besar untuk cache data dalam Python, mengurangkan bilangan I/O dan dengan itu meningkatkan kecekapan muat naik fail.
  3. Mampatkan fail yang dimuat naik dan mengurangkan saiz fail, yang boleh mengurangkan penggunaan lebar jalur rangkaian dengan ketara dan meningkatkan kecekapan muat naik fail.
  4. Gunakan berbilang benang atau berbilang proses untuk mengendalikan tugasan muat naik fail Anda boleh mengendalikan tugas lain semasa memuat naik fail, mempertingkatkan keupayaan pemprosesan serentak sistem.

Ringkasan

Sebagai bahasa pengaturcaraan yang cekap dan mudah digunakan, Python boleh menunjukkan kelebihannya dalam keupayaan pemprosesan teragih dalam bidang pengaturcaraan pelayan Web, dan muat naik fail adalah Aplikasi web Bahagian yang sangat penting dalam program. Artikel ini terutamanya memperkenalkan dua kaedah muat naik fail, kaedah pemprosesan muat naik fail besar, dan kaedah untuk meningkatkan kecekapan muat naik fail Diharap dapat membantu pembangun mengendalikan permintaan muat naik fail dengan lebih baik dan meningkatkan prestasi dan pengalaman pengguna web aplikasi.

Atas ialah kandungan terperinci Pengaturcaraan pelayan Python: Cara mengendalikan muat naik fail yang cekap. 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