สวัสดี! บทความนี้นำเสนอ ตัวอย่างโอเพ่นซอร์ส ที่อธิบายทีละขั้นตอนวิธีใช้ไลบรารี Django Tasks Manager ในโปรเจ็กต์ใหม่ ความมุ่งมั่น จัดทำขึ้นเพื่อเน้นแต่ละขั้นตอนของการใช้งานโดยเริ่มจากไดเร็กทอรีว่างไปจนถึงขั้นตอนสุดท้ายเมื่อโครงการจัดการงานผ่านการควบคุม UI ขอบคุณที่อ่าน!

ก่อนที่ใครก็ตามจะอ่านเนื้อหานี้ ควรรู้ว่ามีอะไรอยู่ในกล่องจะดีกว่า:

ไลบรารีที่ใช้โดยตัวอย่างขับเคลื่อนโดย Django และ Celery ซึ่งเป็นตัวจัดการคิวงานยอดนิยม และมอบวิธีง่ายๆ ในการดำเนินงานเบื้องหลังด้วยการควบคุมเต็มรูปแบบ: เริ่ม/หยุด ดูเอาต์พุต และบันทึกรันไทม์ นี่คือรายการคุณลักษณะห้องสมุดทั้งหมด:

  • ✅ สร้าง/เพิกถอนงาน คื่นฉ่าย
  • ✅ ดูบันทึกและเอาต์พุต
  • ✅ การกำหนดค่าขั้นต่ำ
  • ✅ ติดตั้งผ่าน PyPi
  • ✅ มี TASKS (ให้ไว้เป็นตัวอย่างเริ่มต้น)
  • ✅ งาน users_in_db() - แสดงรายการผู้ใช้ที่ลงทะเบียนทั้งหมด
  • ✅ งาน execute_script() - ให้ผู้ใช้รันระบบ สคริปต์

ในท้ายที่สุด UI นี้ที่เครื่องมือเปิดเผยจะคล้ายกับสิ่งนี้:

ในกรณีที่ฟังดูมีประโยชน์ ขั้นตอนการผสานรวมสำหรับโปรเจ็กต์ Django จะแสดงอยู่ด้านล่าง

สิ่งสำคัญคือการพึ่งพาบริการ Redis ที่กำหนดโดย Celery ซึ่งใช้ในการจัดการและติดตามสถานะงานแบบเรียลไทม์

👉 ขั้นตอนที่ 1 — ติดตั้ง django-tasks-manager ผ่าน PIP

วิธีที่แนะนำในการทำเช่นนี้คือการใช้สภาพแวดล้อมเสมือนที่แยกการติดตั้งไลบรารี

$ pip install django-tasks-manager

เมื่อการติดตั้งเสร็จสิ้น ขั้นตอนต่อไปคือการสร้างไดเร็กทอรีสองไดเร็กทอรีที่ไลบรารีใช้:

  • celery_logs - ใช้เพื่อบันทึกการดำเนินการรันไทม์ของงาน
  • celery_scripts - ตำแหน่งที่ไลบรารีค้นหาสคริปต์ที่จะดำเนินการ
$ mkdir celery_logs 
$ mkdir celery_scripts

แพ็คเกจนี้จัดส่งสคริปต์ง่ายๆ สองสามสคริปต์เพื่อเป็นข้อพิสูจน์แนวคิดพร้อมให้ดาวน์โหลดจาก พื้นที่เก็บข้อมูลสาธารณะ

👉 ขั้นตอนที่ 2 — อัปเดต app routing

# core/urls.py
from django.urls import path, include     # <-- UPDATE: Add 'include' HELPER
urlpatterns = [
    ...
    
    path("", include("django_tm.urls")),  # <-- New Routes
    ...
]

👉 ขั้นตอนที่ 3 — อัปเดตการกำหนดค่า include the new APPS

# App Settings, truncated content
INSTALLED_APPS = [
    ...                  
    'django_tm',              # Django Tasks Manager   # <-- NEW
    'django_celery_results',  # Django Celery Results  # <-- NEW
]

👉 ขั้นตอนที่ 4 — อัปเดตการกำหนดค่า include page templates

# App Settings, truncated content
TEMPLATE_DIR_TASKS = os.path.join(BASE_DIR, "django_tm/templates") # <-- NEW
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',   
        'DIRS': [TEMPLATE_DIR_TASKS],                              # <-- NEW
        'APP_DIRS': True,
    },
]

👉 ขั้นตอนที่ 5 — อัปเดตการกำหนดค่า ส่วน CELERY_ ใหม่

#############################################################
# Celery configurations
# BASE_DIR points to the ROOT of the project
# Note: make sure you have 'os' object imported
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
# Working Directories required write permission
CELERY_SCRIPTS_DIR        = os.path.join(BASE_DIR, "celery_scripts" )
CELERY_LOGS_DIR           = os.path.join(BASE_DIR, "celery_logs"    )
CELERY_BROKER_URL         = os.environ.get("CELERY_BROKER", "redis://localhost:6379")
CELERY_RESULT_BACKEND     = os.environ.get("CELERY_BROKER", "redis://localhost:6379")
CELERY_TASK_TRACK_STARTED = True
CELERY_TASK_TIME_LIMIT    = 30 * 60
CELERY_CACHE_BACKEND      = "django-cache"
CELERY_RESULT_BACKEND     = "django-db"
CELERY_RESULT_EXTENDED    = True
CELERY_RESULT_EXPIRES     = 60*60*24*30 # Results expire after 1 month
CELERY_ACCEPT_CONTENT     = ["json"]
CELERY_TASK_SERIALIZER    = 'json'
CELERY_RESULT_SERIALIZER  = 'json'
#############################################################

👉 ขั้นตอนที่ 6Migrate the database & start แอป

$ python manage.py makemigrations
$ python manage.py migrate
$ 
$ python manage.py runserver

👉 ขั้นตอนที่ 7 — เริ่ม Celery manager (ใช้เทอร์มินัลอื่น)

$ celery --app=django_tm.celery.app worker --loglevel=info

ขณะนี้ผู้ใช้ขั้นสูงสามารถเชื่อมต่อกับ UI และจัดการงานด้วยสายตาได้ตามที่อยู่นี้: http://127.0.0.1:8000/tasks

ขอบคุณที่อ่าน! หากต้องการแหล่งข้อมูลเพิ่มเติม โปรดเข้าไปที่:

🚀 โปรโมชั่น

ในกรณีที่คุณเป็นนักพัฒนารุ่นเยาว์หรือรู้จัก PROMO Bundle นี้สร้างขึ้นและ ลดราคา 85% โดย Creative-Tim อาจมีประโยชน์ แพ็คเกจนี้ประกอบด้วยคอลเลกชั่นระดับพรีเมียมที่แข็งแกร่ง (ชุดอุปกรณ์ และ แดชบอร์ด) ที่สามารถใช้สร้างพอร์ตโฟลิโอและเว็บแอปที่สะดุดตาได้ในเวลาอันรวดเร็ว

👉 Junior PROMO Bundle — ชุดพรีเมี่ยม24 ชุดและไฟล์นักออกแบบ