คำแนะนำทีละขั้นตอนสำหรับการปรับใช้แอพ 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)

มาเป็นนักเขียนที่ MLearning.ai