Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Pelayan Pembangunan Flask Saya Nampak Melaksanakan Dua Kali?

Mengapa Pelayan Pembangunan Flask Saya Nampak Melaksanakan Dua Kali?

DDD
Lepaskan: 2024-12-09 17:41:19
asal
485 orang telah melayarinya

Why Does My Flask Development Server Appear to Execute Twice?

Pelayan Pembangunan Flask Melaksanakan Dua Kali: Mendedahkan Sebab

Pelayan pembangunan Flask mengendalikan permulaan semula aplikasi anda apabila perubahan dibuat pada kod anda . Fungsi ini disediakan oleh fungsi restart_with_reloader() perpustakaan Werkzeug.

Fungsi ini menghasilkan proses anak, melaksanakan skrip anda sekali lagi menggunakan subprocess.call(). Akibatnya, kedua-dua skrip asal dan proses anak mencetak mesej mulakan semula sekali setiap satu, menghasilkan tingkah laku cetakan berganda yang diperhatikan.

Lumpuhkan Pemuat Semula

Untuk menghapuskan tingkah laku ini , lumpuhkan pemuat semula dengan menetapkan use_reloader kepada False:

app.run(port=4004, debug=config.DEBUG, host='0.0.0.0', use_reloader=False)
Salin selepas log masuk

Sebagai alternatif, anda boleh menggunakan arahan larian kelalang dengan bendera --no-reload:

FLASK_DEBUG=1 flask run --no-reload
Salin selepas log masuk

Kesan Proses Pemuat Semula

Gunakan fungsi werkzeug.serving.is_running_from_reloader() untuk mengesan proses kanak-kanak:

from werkzeug.serving import is_running_from_reloader

if is_running_from_reloader():
    print(f"################### Restarting @ {datetime.utcnow()} ###################")
Salin selepas log masuk

Gunakan @app.before_first_request Penghias

Jika anda perlu menetapkan modul global, pertimbangkan untuk menggunakan penghias @app.before_first_request:

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

Penghias ini melaksanakan fungsi sekali selepas setiap muat semula, apabila permintaan pertama adalah dibuat.

Nota:

Dalam pelayan WSGI skala penuh yang menggunakan forking atau subproses untuk mengendalikan permintaan, pengendali before_first_request boleh digunakan untuk setiap subproses.

Atas ialah kandungan terperinci Mengapa Pelayan Pembangunan Flask Saya Nampak Melaksanakan Dua Kali?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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