ศูนย์คู่มือ Ruk-Com PaaS

คู่มือการพัฒนา Deploy และดูแล Application บนแพลตฟอร์ม

RUK-COM PAAS / PYTHON

คู่มือ Python Engine สำหรับ Python

คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี

ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง

คู่มือภาษาไทย

คำสั่ง ชื่อเมนู พารามิเตอร์ และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง

เครื่องยนต์หลามเป็นเทมเพลตคอนเทนเนอร์ที่จัดการแพลตฟอร์มสำหรับเว็บแอปพลิเคชัน Python สมัยใหม่ไม่เหมือนอาปาเช่ไพธอนโดยจะดำเนินขั้นตอนการสมัครโดยตรงผ่านทางยูวิคอร์นหรือกูนิคอร์น. ไม่มีพร็อกซีย้อนกลับ (เช่นงินซ์หรือแคดดี้) ภายในคอนเทนเนอร์ — แอปพลิเคชันเซิร์ฟเวอร์คือจุดสิ้นสุด HTTP(S)

เทมเพลต Python Engine รองรับตัวจัดการกระบวนการสองตัวต่อไปนี้:

  • ยูวิคอร์นสำหรับเฟรมเวิร์ก ASGI ดั้งเดิมเช่น FastAPI, Starlette, Django Channels และ Quart
  • กูนิคอร์นสำหรับเฟรมเวิร์ก WSGI เช่น Django และ Flask

เคล็ดลับ:หากจำเป็นคุณสามารถสลับระหว่างผู้จัดการกระบวนการด้วยปรับใช้คอนเทนเนอร์ใหม่หรือโดยการปรับกระบวนการ_ผู้จัดการตัวแปรคอนเทนเนอร์(ยูวิคอร์นหรือกุนิคอร์น; จำเป็นต้องรีสตาร์ทคอนเทนเนอร์เพื่อใช้การเปลี่ยนแปลง)

อ้างถึงข้อมูลจำเพาะของแอพ Pythonสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับเวิร์กโฟลว์การ Deploy ตรรกะการติดตั้งการพึ่งพาและการตรวจจับแอปพลิเคชันอัตโนมัตินอกจากนี้ยังครอบคลุมหัวข้อต่างๆเช่นโฟลว์การรับส่งข้อมูล SSL ของแพลตฟอร์มและการให้บริการไฟล์แบบคงที่

สร้าง Environment เครื่องยนต์ Python

  1. เข้าถึงตัวช่วยสร้างโทโพโลยีโดยคลิกที่Environment ใหม่ปุ่มที่ด้านบนของแดชบอร์ด

  2. นำทางไปยังหลามแท็บภาษาโปรแกรมให้เลือกเครื่องยนต์หลามเซิร์ฟเวอร์แอปพลิเคชันและเลือกเวอร์ชันของเอ็นจิ้นที่ต้องการและตัวจัดการกระบวนการ (ยูวิคอร์นหรือกุนิคอร์น).

Image 31: Python Engine topology wizardปรับการตั้งค่าอื่นๆ (เช่นขีดจำกัด cloudlets, IP สาธารณะหรือภูมิภาค) ระบุชื่อ Environment แล้วคลิกสร้าง.

  1. Environment ของคุณจะถูกสร้างขึ้นภายในไม่กี่นาที

ยูวิคอร์น

ยูวิคอร์นเป็นASGIเซิร์ฟเวอร์ที่สร้างขึ้นอะซินซิโอและปรับให้เหมาะสมสำหรับ async I/O เป็นตัวเลือกที่แนะนำสำหรับเฟรมเวิร์ก ASGI ดั้งเดิมเช่น FastAPI, Starlette, Django Channels และ Quart

ลักษณะสำคัญ:

  • ค่าใช้จ่ายต่ำและประสิทธิภาพที่แข็งแกร่งสำหรับเวิร์กโหลดอะซิงก์
  • การสนับสนุนดั้งเดิมสำหรับการเชื่อมต่อ HTTP และ WebSocket
  • บิวท์อิน--reloadโหมดสำหรับการพัฒนา
  • รันเป็นกระบวนการเดียวตามค่าเริ่มต้นใช้พนักงานหลายคนหรือเปลี่ยนไปใช้ Gunicorn เพื่อควบคุมกระบวนการทั้งหมด

แพลตฟอร์มเริ่มต้น Uvicorn ภายในระหว่างการใช้งานตัวอย่างต่อไปนี้แสดงคำสั่งที่เทียบเท่าสำหรับการพัฒนาในเครื่องหรือการดีบัก SSH:

คัดลอกข้อความ

uvicorn app.main:app --host 0.0.0.0 --port 8000
uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 4

กูนิคอร์น

กูนิคอร์นเป็นตัวจัดการกระบวนการ prefork และเซิร์ฟเวอร์ HTTP สำหรับเว็บแอปพลิเคชัน Python โดยจะดูแลกระบวนการของผู้ปฏิบัติงานหลายกระบวนการจัดการการโหลดซ้ำและการปิดเครื่องอย่างค่อยเป็นค่อยไปรีสตาร์ทผู้ปฏิบัติงานที่เสียหายและมีตัวเลือกการกำหนดค่ารันไทม์ที่ครอบคลุม

ลักษณะสำคัญ:

  • ความยืดหยุ่นในการผลิต: พนักงานหลายคน, การโหลดซ้ำอย่างสง่างาม, การแยกส่วนการชน
  • พื้นเมืองWSGIรองรับแอปพลิเคชัน Django และ Flask
  • ASGIสนับสนุนผ่านทางuvicorn.workers.UvicornWorkerคลาสคนงานสำหรับ FastAPI และ Starlette
  • การควบคุมการปฏิบัติงาน:workers,timeout,graceful-timeout,max-requests,preload_appการเข้าถึงและบันทึกข้อผิดพลาด

แพลตฟอร์มเริ่มต้น Gunicorn ภายในระหว่างการใช้งานตัวอย่างต่อไปนี้แสดงคำสั่งที่เทียบเท่าสำหรับการพัฒนาในเครื่องหรือการดีบัก SSH:

คัดลอกข้อความ

# WSGI applications (Django/Flask)
gunicorn myproj.wsgi:application --bind 0.0.0.0:8000 --workers 4

# ASGI applications (FastAPI/Starlette)
gunicorn -k uvicorn.workers.UvicornWorker app.main:app --bind 0.0.0.0:8000 --workers 4