คำแนะนำทีละขั้นตอนสำหรับการปรับใช้แอพ Python Flask บน Heroku
การแนะนำ
เราสร้างแบบจำลองของเรา เราฝึกโมเดลของเราบนชุดข้อมูลโดยใช้อัลกอริธึม Machine Learning ต่างๆ เราคำนวณความแม่นยำของแบบจำลองของเราจากข้อมูลการทดสอบ และตอนนี้? ผู้คนสามารถใช้แบบจำลองของเราได้อย่างไร? ใช่แล้ว ขั้นตอนต่อไปคือการปรับใช้โมเดลของเรา มีตัวเลือกต่างๆ มากมายสำหรับวิธีปรับใช้โมเดล Machine Learning ของเรา หนึ่งในตัวเลือกเหล่านั้นคือการใช้ Flask และ Heroku Heroku เป็นแพลตฟอร์มคลาวด์ในรูปแบบบริการ (PaaS) รองรับภาษาการเขียนโปรแกรมหลายภาษา การใช้ Heroku คือการปรับใช้ จัดการ และปรับขนาดแอปสมัยใหม่
ภาพรวม
ในบทความนี้เราอยากจะแสดง
- วิธีการติดตั้ง Flask บนเครื่องของเรา
- วิธีสร้างแอป Flask แรกของเรา
- วิธีปรับใช้แอปของเรากับ Heroku
ขั้นตอนที่ 1: สร้างโฟลเดอร์โครงการ
ขั้นแรก เราจะสร้างโฟลเดอร์โครงการของเรา เราจะเปลี่ยนไดเรกทอรีการทำงานปัจจุบันของเราเป็นโฟลเดอร์เดสก์ท็อปของเรา เราจะรันคำสั่งต่อไปนี้:
หลังจากนั้นเราจะสร้างไดเร็กทอรีใหม่ด้วยคำสั่งต่อไปนี้:
จากนั้นเราจะเปลี่ยนไดเร็กทอรีการทำงานปัจจุบันเป็นโฟลเดอร์ที่เราสร้างขึ้น:
ขั้นตอนที่ 2: สร้างสภาพแวดล้อมเสมือน Python
เราจะไม่ติดตั้ง Flask ในโฮมไดเร็กตอรี่ของ Python เพื่อการใช้งานทั่วทั้งระบบ เราขอแนะนำให้สร้างและติดตั้งสภาพแวดล้อมเสมือนเพื่อติดตั้ง Flask ใน Python เป็นโฟลเดอร์ที่มีสำเนาของล่าม Python ในเครื่องที่ติดตั้งแพ็คเกจไว้ ข้อดีคือแพ็คเกจที่ติดตั้งสำหรับโปรเจ็กต์ไม่มีผลกระทบต่อกัน
วิธีที่แนะนำในการสร้างสภาพแวดล้อมเสมือนใน Python 3 คือการใช้โมดูล venv มาตรฐาน ไม่จำเป็นต้องติดตั้ง venv ด้วย pip หากคุณใช้ virtualenv แทน คุณจะต้องติดตั้งด้วย pip เราจะไปที่โฟลเดอร์รูทของโปรเจ็กต์และเราจะใช้คำสั่งต่อไปนี้:
venv ตัวที่สองคือโฟลเดอร์ชื่อ venv เราจะจัดเก็บแพ็คเกจทั้งหมดไว้ในโฟลเดอร์นี้ หลังจากนั้นเราจะต้องเปิดใช้งานสภาพแวดล้อมก่อนที่จะเริ่มทำงานในโครงการ เพื่อเปิดใช้งานสภาพแวดล้อม เราจะรันคำสั่งต่อไปนี้:
หลังจากนั้นเราจะเปลี่ยนไดเร็กทอรีการทำงานปัจจุบันเป็นโฟลเดอร์ที่เราสร้างขึ้น:
เราจะเห็นชื่อของสภาพแวดล้อมที่ใช้งานในปัจจุบันในพรอมต์เชลล์ของเรา
ขั้นตอนที่ 3: ติดตั้ง Flask & Gunicorn
เช่นเดียวกับแพ็คเกจ Python อื่นๆ Flask ติดตั้งได้ง่ายมากโดยใช้ยูทิลิตี้ pip ยูทิลิตี้ pip เป็นส่วนหนึ่งของการแจกแจงแบบมาตรฐานของ Python คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ Flask ได้ "ที่นี่" เราจะรันคำสั่งต่อไปนี้เพื่อติดตั้ง Flask และ Gunicorn:
ผลลัพธ์:
ขั้นตอนที่ 4 : สร้างแอป Python อย่างง่าย
เราจะสร้างโฟลเดอร์แอปด้วยคำสั่งต่อไปนี้:
เราจะเปลี่ยนไดเร็กทอรีการทำงานปัจจุบันเป็นโฟลเดอร์ที่เราสร้างขึ้น:
หลังจากนั้นเราจะสร้างไฟล์ Python ด้วยคำสั่งนี้และป้อนรหัสต่อไปนี้:
แอปพลิเคชัน Flask มีลักษณะดังนี้:
- บรรทัดแรกของโค้ดจะนำเข้าคลาส Flask
- โค้ดบรรทัดที่สองจะสร้างอินสแตนซ์
- สัญลักษณ์ @ หน้า app.route() บอกว่า Route() เป็นฟังก์ชันมัณฑนากร
- วัตถุนี้เป็นวัตถุแอปพลิเคชัน WSGI เราจะแมป URL กับฟังก์ชันดัชนี () เมื่อใดก็ตามที่ / มันจะทริกเกอร์ฟังก์ชันที่แมป
หมายเหตุ: การเยื้อง (ช่องว่างที่จุดเริ่มต้นของบรรทัดโค้ด) มีความสำคัญใน Python
ขั้นตอนที่ 5 : สร้างไฟล์ wsgi.py
ขั้นแรก เราจะกลับไปที่ไดเร็กทอรีการทำงานล่าสุดด้วยคำสั่งต่อไปนี้:
จากนั้นเราจะสร้างไฟล์ wsgi.py ด้วยคำสั่งต่อไปนี้:
wsgi.py มีลักษณะดังนี้:
ขั้นตอนที่ 6: เรียกใช้แอปพลิเคชันในระบบภายในของคุณ
เราใช้เซิร์ฟเวอร์การพัฒนา ตัวดีบักเกอร์ และตัวโหลดซ้ำในตัว ในการรันไฟล์ในระบบโลคัลของคุณ เราจะออกคำสั่งต่อไปนี้:
ขั้นตอนที่ 7: สร้างไฟล์ Requirements.txt
ไฟล์นี้เป็นไฟล์ข้อความธรรมดาที่มีโมดูลและแพ็คเกจ Python ทั้งหมดที่ใช้โดยโปรเจ็กต์ ช่วยให้การติดตั้งโมดูลที่จำเป็นบนคอมพิวเตอร์เครื่องใดก็ได้ง่ายขึ้น ทำให้ง่ายต่อการแบ่งปันโครงการกับผู้อื่น Heroku ต้องการไฟล์ Requirement.txt เพื่อตรวจสอบว่าเป็นโปรเจ็กต์ Python เนื้อหาของไฟล์มีลักษณะดังนี้:
ด้วยคำสั่งต่อไปนี้ เราสามารถตรวจสอบโมดูลที่เราได้ติดตั้งด้วย pip install:
คำสั่งซื้อไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ นอกจากนี้ยังแสดงเวอร์ชันของโมดูลที่ติดตั้งด้วย
ไฟล์ Requirements.txt ต้องอยู่ในโฟลเดอร์รูทของโปรเจ็กต์ มิฉะนั้น แอปพลิเคชัน Heroku จะไม่สามารถปรับใช้ได้ เราจะไปที่โฟลเดอร์รูทของโปรเจ็กต์และเราจะรันคำสั่งต่อไปนี้:
ขั้นตอนที่ 8: สร้าง Procfile
procfile ระบุคำสั่งที่ดำเนินการโดยแอปเมื่อเริ่มต้นระบบ Procfile เป็นสิ่งจำเป็นสำหรับแอป Heroku เราจะสร้าง Procfile ภายในโฟลเดอร์รูทของโปรเจ็กต์:
เราจะเพิ่มบรรทัดต่อไปนี้:
- คำว่า wsgi หมายถึงชื่อของไฟล์ python ที่รันแอปพลิเคชันของเรา
- คำว่าแอปหมายถึงชื่อแอปของเรา
ขั้นตอนที่ 9: ปรับใช้แอปของเรากับ Heroku
เราจะเข้าสู่ Heroku ด้วยคำสั่งต่อไปนี้:
เราจะต้องติดตั้ง git และ Heroku CLI หากคุณไม่ได้ติดตั้ง Git และ Heroku CLI โปรดปฏิบัติตามคำแนะนำเพื่อติดตั้ง Git และ Heroku CLI ที่นี่:
ในการเริ่มต้นพื้นที่เก็บข้อมูล git ใหม่ในไดเร็กทอรีของเรา เราจะใช้คำสั่ง git init ในไดเร็กทอรีรากของแอปของเรา:
หลังจากรัน git init แล้ว git จะเริ่มติดตามการเปลี่ยนแปลงในโครงการ
หมายเหตุ: หากแอปของคุณอยู่ในไดเรกทอรีย่อยของพื้นที่เก็บข้อมูล แอปจะไม่ทำงานเมื่อพุชไปที่ Heroku
ในการเพิ่ม main.py เราจะใช้ คำสั่ง git add เพื่อบันทึกลงในที่เก็บ:
หากต้องการเพิ่มไฟล์ทั้งหมดที่มีการเปลี่ยนแปลง เราจะใช้คำสั่งต่อไปนี้:
ไฟล์ชั่วคราวหมายความว่าเราเพิ่มไฟล์ที่คอมมิต เมื่อจัดฉากแล้ว จะไม่สามารถเปลี่ยนแปลงได้อีก
หมายเหตุ: คุณควรเพิ่มไฟล์สเตจเฉพาะเมื่อคุณพร้อมที่จะคอมมิตเท่านั้น
สิ่งสำคัญคือต้องรวมไฟล์ .gitignore ไว้ในที่เก็บ git ทุกอัน ไฟล์นี้จะบอกคอมไพล์ว่าไฟล์ใดที่ควรละเว้น ตัวอย่างเช่น เราจะละเว้นไฟล์ต่อไปนี้:
- ไฟล์รหัสไบต์ใน Python (*.pyc)
- ฐานข้อมูล (*.db)
- ความลับ
- ไฟล์ข้อมูลเมตา IDE (.idea)
- env หรือ venv
หากต้องการติดตามโค้ดในพื้นที่เก็บข้อมูล Git ในเครื่อง เราจะใช้ คำสั่ง git commit เพื่อยืนยันการเปลี่ยนแปลง เราจะเพิ่มข้อความยืนยันด้วย -m:
แอปนี้ยังไม่มีอยู่บนเซิร์ฟเวอร์ระยะไกลใดๆ เราจะปรับใช้แอปโดยการกดโค้ดไปยังรีโมตพิเศษที่โฮสต์โดย Heroku ที่เชื่อมโยงกับแอปนั้น คำสั่ง Heroku create CLI จะตั้งค่าแอปพลิเคชันว่างใหม่บน Heroku เราจะไปที่ไดเรกทอรีรากของแอปของเรา เราจะใช้คำสั่งต่อไปนี้:
นอกจากนี้เรายังสามารถเพิ่มรีโมตไปยังพื้นที่เก็บข้อมูลในเครื่องของเราให้กับหนึ่งในแอพ Heroku ที่มีอยู่ของเราจากบรรทัดคำสั่ง:
หากต้องการพุชโค้ดจากพื้นที่เก็บข้อมูลในเครื่องของเราไปยังรีโมท Heroku เราจะใช้ คำสั่ง git push:
ตอนนี้เราเปิดเว็บเบราว์เซอร์แล้วพิมพ์ "http://127.0.0.1:5000/" ในแถบที่อยู่:
หากเราไม่ต้องการสภาพแวดล้อมเสมือนจริง เราสามารถปิดการใช้งานได้ด้วยคำสั่งปิดการใช้งาน
ถ้าคุณชอบบทความนี้กรุณาปรบมือ หากคุณต้องการอ่านบทความที่คล้ายกันจากฉัน ติดตามฉันเพื่อรับอีเมลทุกครั้งที่ฉันเผยแพร่บทความใหม่
อ้างอิง:
Dwyer, G. , Aggarwal, S. และ Stouffer, J. (2017) Flask: การสร้าง Python Web Services ฉบับที่ 1 สำนักพิมพ์แพคต์ มีอยู่ที่: https://www.perlego.com/book/527263/flask-building-python-web-services-pdf (เข้าถึง: 30 สิงหาคม 2022)
Grinberg, M. (2014) การพัฒนาเว็บ Flask การพัฒนาเว็บแอปพลิเคชันด้วย Python O'Reilly Media มีอยู่ที่: https://www.oreilly.com/library/view/flask-web-development/9781491991725/ (เข้าถึง: 25 กันยายน 2022)