Quartz เป็นไลบรารีการจัดตารางเวลางานที่ทรงพลังและยืดหยุ่นใน Python และ Flask เป็นเฟรมเวิร์กเว็บแบบน้ำหนักเบา เมื่อปรับใช้แอปพลิเคชัน Flask บนแพลตฟอร์มคลาวด์ การผสานรวม Quartz จะก่อให้เกิดประโยชน์มากมาย เช่น การทำงานอัตโนมัติ การประมวลผลข้อมูลตามกำหนดเวลา และอื่นๆ ในฐานะซัพพลายเออร์ Quartz Flask ฉันมาที่นี่เพื่อแชร์วิธีใช้ Quartz ในแอปพลิเคชัน Flask ที่ใช้งานบนแพลตฟอร์มคลาวด์
ข้อกำหนดเบื้องต้น
ก่อนที่เราจะเริ่ม ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งสิ่งต่อไปนี้:
- Python (เวอร์ชัน 3.6 หรือสูงกว่า)
- กระติกน้ำ
- Quartz (APScheduler เป็นการใช้งาน Quartz ใน Python ที่ได้รับความนิยม)
คุณสามารถติดตั้ง Flask และ APScheduler ได้โดยใช้ pip:
pip ติดตั้งตัวกำหนดตารางเวลาขวด
การตั้งค่าแอปพลิเคชันขวดพื้นฐาน
ขั้นแรก เรามาสร้างแอปพลิเคชัน Flask แบบง่ายๆ กันก่อน นี่คือตัวอย่างพื้นฐาน:


จากขวดนำเข้า Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello, World!' ถ้า __name__ == '__main__': app.run(debug=True)
นี่เป็นแอปพลิเคชั่น Flask พื้นฐานที่ส่งคืน "Hello, World!" เมื่อคุณเข้าถึง URL รูท
การรวมควอตซ์เข้ากับแอปพลิเคชัน Flask
ตอนนี้ เรามารวม APScheduler (การใช้งาน Quartz) เข้ากับแอปพลิเคชัน Flask ของเรากันดีกว่า เราจะสร้างงานง่ายๆ ที่ทำงานทุกๆ 5 วินาทีและพิมพ์ข้อความ
จากการนำเข้าขวด Flask จาก apscheduler.schedulers.พื้นหลังนำเข้า แอป BackgroundScheduler = Flask(__name__) def job_function(): พิมพ์('งานนี้ทำงานทุกๆ 5 วินาที!') scheduler = BackgroundScheduler() scheduler.add_job(func=job_function, trigger='interval', วินาที=5) scheduler.start() @app.route('/') def index(): return 'สวัสดี โลก!' ถ้า __name__ == '__main__': ลอง: app.run(debug=True) ยกเว้น (KeyboardInterrupt, SystemExit): scheduler.shutdown()
ในโค้ดนี้ เราจะนำเข้าก่อนพื้นหลังตัวกำหนดเวลาจากapscheduler.schedulers.พื้นหลัง- จากนั้นเราจะกำหนดฟังก์ชันงานง่ายๆjob_functionที่พิมพ์ข้อความ เราสร้างอินสแตนซ์ของพื้นหลังตัวกำหนดเวลาเพิ่มงานเข้าไปโดยใช้ทริกเกอร์ช่วงเวลา 5 วินาที และเริ่มตัวกำหนดเวลา สุดท้ายนี้ เราจะจัดการกับการปิดแอปพลิเคชันเพื่อหยุดตัวกำหนดเวลาอย่างสวยงาม
การปรับใช้แอปพลิเคชัน Flask บนแพลตฟอร์มคลาวด์
มีแพลตฟอร์มคลาวด์มากมาย เช่น Heroku, AWS และ Google Cloud Platform เพื่อความง่าย ลองใช้ Heroku เป็นตัวอย่าง
ขั้นตอนที่ 1: สร้าง Procfile
Procfile เป็นไฟล์ข้อความที่บอก Heroku ถึงวิธีเรียกใช้แอปพลิเคชันของคุณ สร้างไฟล์ชื่อโปรไฟล์ในไดเร็กทอรีโครงการของคุณโดยมีเนื้อหาดังต่อไปนี้:
เว็บ: แอป gunicorn:แอป
ที่นี่,แอปอ้างถึงชื่อไฟล์ Python (หากแอปพลิเคชัน Flask ของคุณอยู่ในไฟล์ชื่อapp.py) และอันที่สองแอปอ้างถึงอินสแตนซ์แอปพลิเคชัน Flask
ขั้นตอนที่ 2: สร้างข้อกำหนด txt
สร้างกข้อกำหนด.txtไฟล์ที่แสดงรายการการขึ้นต่อกันทั้งหมดของแอปพลิเคชันของคุณ คุณสามารถสร้างมันขึ้นมาได้โดยใช้คำสั่งต่อไปนี้:
pip freeze > ความต้องการ.txt
ขั้นตอนที่ 3: ปรับใช้กับ Heroku
- ขั้นแรก ลงทะเบียนบัญชี Heroku หากคุณยังไม่ได้สมัคร
- ติดตั้ง Heroku CLI บนเครื่องของคุณ
- เข้าสู่ระบบ Heroku จาก CLI:
เข้าสู่ระบบเฮโรกุ
- สร้างแอป Heroku ใหม่:
heroku สร้าง
- กดรหัสของคุณไปที่ Heroku:
git push heroku หลัก
- เริ่มแอปพลิเคชันบน Heroku:
heroku ps: สเกลเว็บ = 1
การใช้ผลิตภัณฑ์ควอตซ์ประเภทต่างๆ ในแอปพลิเคชัน
ในสถานการณ์จริง คุณอาจต้องโต้ตอบกับผลิตภัณฑ์ควอตซ์ต่างๆ ตัวอย่างเช่น,หลอดควอทซ์-กระติกน้ำควอทซ์, และเรือควอทซ์สามารถใช้ในการใช้งานในห้องปฏิบัติการหรือทางอุตสาหกรรมต่างๆ ที่ผสานรวมกับการใช้งาน Flask ของคุณ
สมมติว่าแอปพลิเคชัน Flask ของคุณมีไว้สำหรับระบบการจัดการห้องปฏิบัติการ คุณสามารถใช้ขวดควอตซ์เพื่อจัดเก็บและจัดการตัวอย่างสารเคมี หลอดควอตซ์สำหรับปฏิกิริยาเคมีต่างๆ และใช้เรือควอตซ์สำหรับการขนส่งตัวอย่าง
นี่คือตัวอย่างวิธีที่คุณสามารถรวมแนวคิดเหล่านี้เข้ากับแอปพลิเคชัน Flask ของคุณได้ สมมติว่าคุณมีตำแหน่งข้อมูล API เพื่อบันทึกการใช้งานขวดควอตซ์:
จากการนำเข้าขวด Flask, jsonify, ขอ app = Flask(__name__) @app.route('/use_quartz_flask', วิธีการ=['POST']) def use_quartz_flask(): data = request.get_json() # ที่นี่คุณสามารถเพิ่มโค้ดเพื่อบันทึกการใช้งานของ Quartz Flask # ตัวอย่างเช่น บันทึกข้อมูลลงในฐานข้อมูล return jsonify({'message': 'Quartz Flask การใช้งานที่บันทึกไว้ สำเร็จ'}) ถ้า __name__ == '__main__': app.run(debug=True)
การจัดการข้อผิดพลาดและการตรวจสอบ
เมื่อใช้ Quartz ในแอปพลิเคชัน Flask บนแพลตฟอร์มคลาวด์ สิ่งสำคัญคือต้องจัดการกับข้อผิดพลาดอย่างเหมาะสมและตรวจสอบแอปพลิเคชัน
การจัดการข้อผิดพลาด
ในส่วนของตัวกำหนดเวลา คุณสามารถเพิ่ม try - ยกเว้นบล็อกในฟังก์ชันงานของคุณเพื่อจัดการกับข้อผิดพลาดที่อาจเกิดขึ้นได้ ตัวอย่างเช่น:
def job_function(): ลอง: # รหัสงานของคุณที่นี่พิมพ์ ('งานนี้ทำงานทุกๆ 5 วินาที!') ยกเว้นข้อยกเว้นเป็น e: พิมพ์ (f'ข้อผิดพลาดในงาน: {e}')
การตรวจสอบ
แพลตฟอร์มคลาวด์ส่วนใหญ่มีเครื่องมือตรวจสอบ ตัวอย่างเช่น Heroku มีแดชบอร์ดของตัวเองที่คุณสามารถดูบันทึกแอปพลิเคชัน การใช้ทรัพยากร และอื่นๆ อีกมากมาย คุณยังสามารถใช้เครื่องมือตรวจสอบของบุคคลที่สาม เช่น New Relic หรือ Datadog เพื่อตรวจสอบแอปพลิเคชัน Flask ของคุณและตัวกำหนดเวลา Quartz
การปรับขนาดแอปพลิเคชัน
เมื่อแอปพลิเคชันของคุณเติบโตขึ้น คุณอาจต้องปรับขนาดเพื่อรองรับปริมาณข้อมูลและงานมากขึ้น แพลตฟอร์มคลาวด์ทำให้การปรับขนาดแอปพลิเคชันของคุณในแนวนอนหรือแนวตั้งเป็นเรื่องง่าย
การปรับขนาดแนวนอน
การปรับสเกลแนวนอนหมายถึงการเพิ่มอินสแตนซ์ของแอปพลิเคชันของคุณมากขึ้น บน Heroku คุณสามารถปรับขนาดจำนวน web dynos ได้:
heroku ps: สเกลเว็บ = 3
ซึ่งจะเพิ่มจำนวน web dynos จาก 1 เป็น 3 ทำให้แอปพลิเคชันของคุณสามารถจัดการกับคำขอที่เกิดขึ้นพร้อมกันได้มากขึ้น
การปรับขนาดแนวตั้ง
การปรับขนาดแนวตั้งหมายถึงการเพิ่มทรัพยากร (CPU, หน่วยความจำ) ของแต่ละอินสแตนซ์ บนแพลตฟอร์มคลาวด์บางแพลตฟอร์ม คุณสามารถอัปเกรดประเภทอินสแตนซ์เพื่อรับทรัพยากรเพิ่มเติมได้
บทสรุป
การใช้ Quartz ในแอปพลิเคชัน Flask ที่ใช้งานบนแพลตฟอร์มคลาวด์สามารถนำความยืดหยุ่นและระบบอัตโนมัติที่ยอดเยี่ยมมาสู่โปรเจ็กต์ของคุณ ในฐานะซัพพลายเออร์ขวดควอตซ์ เราสามารถจัดหาผลิตภัณฑ์ควอตซ์คุณภาพสูงและการสนับสนุนด้านเทคนิคเพื่อช่วยคุณรวมผลิตภัณฑ์เหล่านี้เข้ากับการใช้งานของคุณ
หากคุณสนใจที่จะซื้อของเราหลอดควอทซ์-กระติกน้ำควอทซ์, หรือเรือควอทซ์หรือต้องการความช่วยเหลือเพิ่มเติมในการรวม Quartz เข้ากับแอปพลิเคชัน Flask ของคุณ โปรดติดต่อเราเพื่อขอการจัดซื้อและการเจรจา
อ้างอิง
- เอกสารประกอบขวด: https://flask.palletsprojects.com/
- เอกสาร APScheduler: https://apscheduler.readthedocs.io/
- เอกสาร Heroku: https://devcenter.heroku.com/

