Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Pelayan Dev Flask Saya Menunjukkan Mesej Mulakan Semula Berganda?

Mengapa Pelayan Dev Flask Saya Menunjukkan Mesej Mulakan Semula Berganda?

Barbara Streisand
Barbara Streisandasal
2024-12-07 15:44:11652semak imbas

Why Does My Flask Dev Server Show a Double Restart Message?

Double Restart Printout dalam Flask Dev Server

Apabila menjalankan pelayan pembangunan tapak web menggunakan Flask, pengguna telah melihat tingkah laku anomali apabila pelayan dimulakan semula mesej muncul dua kali dan bukannya sekali. Untuk memahami sebab di sebalik ini, mari kita mendalami mekanik pelayan pembangunan Flask.

Flask menggunakan Werkzeug, perpustakaan utiliti WSGI, untuk melancarkan pelayan pembangunan melalui kaedah app.run(). Werkzeug menggunakan teknik yang dipanggil "muat semula" untuk memulakan semula pelayan secara automatik apabila mengesan perubahan dalam kod. Proses pemuatan semula melibatkan pembentukan proses anak yang menjalankan skrip Flask anda sekali lagi menggunakan subprocess.call().

Proses anak ini menganggap kod yang sama seperti proses induk, yang membawa kepada pelaksanaan dua kali mesej mulakan semula. Untuk menghapuskan tingkah laku ini, tetapkan parameter use_reloader app.run() kepada False. Sebagai alternatif, lumpuhkan pemuat semula semasa pelaksanaan baris perintah Flask:

FLASK_DEBUG=1 flask run --no-reload

Untuk senario lanjutan di mana pengesanan kehadiran proses anak muat semula adalah penting, gunakan fungsi is_running_from_reloader() Werkzeug. Walau bagaimanapun, adalah dinasihatkan untuk menggunakan penghias @app.before_first_request untuk memulakan modul global, menjamin satu pelaksanaan selepas setiap muat semula.

@app.before_first_request
def before_first_request():
    print(f"########### Restarted, first request @ {datetime.utcnow()} ############")

Perhatikan bahawa pengendali before_first_request mungkin digunakan untuk setiap subproses baharu dalam WSGI skala penuh pelayan yang menggunakan forking atau subproses baharu.

Atas ialah kandungan terperinci Mengapa Pelayan Dev Flask Saya Menunjukkan Mesej Mulakan Semula Berganda?. 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