นายงานเป็นคิวกระจายง่ายๆที่ออกแบบมาสำหรับการจัดการจำนวนมากของงานหนึ่งออก
เราสร้างนี้ที่ Disqus ในการจัดการบ่อย แต่งานที่ผิดปกติเช่น "การโยกย้ายข้อมูลนี้ไปยังคีมาใหม่"
ทำไม?
คุณอาจจะถามว่า "ทำไมไม่ใช้คื่นฉ่าย?" ดีคำตอบก็คือว่าต้องเข้าคิวปกติ (ไม่แท้จริง แต่มันจะเจ็บปวดโดยไม่ต้อง) คุณ buffer งานทั้งหมดเป็นสถานที่กลาง นี้จะกลายเป็นปัญหาเมื่อคุณมีจำนวนมากของงานโดยเฉพาะอย่างยิ่งเมื่อพวกเขามีข้อมูลจำนวนมาก
ลองนึกภาพคุณมี 1 พันล้านงานแต่ละชั่งในที่ 5k Thats, ไม่มีการบีบอัดอย่างน้อย 4 เทราไบต์ของการจัดเก็บข้อมูลที่จำเป็นเพียงเพื่อให้ว่าไปรอบ ๆ และได้รับคุณน้อยมาก
นายงานในมืออื่น ๆ ที่มีการออกแบบมาเพื่อใช้ iterator กลับมาทำงานต่อและเพียงดึงในจำนวนสูงสุดของงานในเวลา (โดยใช้มาตรฐานหลามคิวของ) เพื่อให้แน่ใจรูปแบบหน่วยความจำที่สอดคล้องกันว่าสามารถปรับขนาดเส้นตรง
การใช้งาน
สร้าง iterator และโทรกลับ:
ซ็อกเก็ตนำเข้า
# เราต้องให้แน่ใจว่าหมดเวลาเริ่มต้น ** ไม่ได้ตั้งค่า ** หรืออึสุ่มจะตีแฟน
socket.setdefaulttimeout (ไม่มี)
# นายงาน / example.py
def get_jobs (ล่าสุด = 0):
& nbsp; # ที่ผ่านมาจะถูกส่งหากรัฐก็กลับ
& nbsp; # จากการทำงานก่อนหน้านี้
& nbsp; สำหรับฉันใน xrange (ในช่วง 100000000):
& nbsp; # ให้ผลงานจะต้อง serializeable กับดอง
& nbsp; ฉันผลผลิต
def handle_job (i):
& nbsp; # นี้ ** ** ต้องได้รับการ idempotent เป็นกลับมาทำงานกระบวนการอาจดำเนินงาน
& nbsp; # ที่ได้รับแล้วทำงาน
& nbsp; พิมพ์ "Got% R!" % ฉัน
วางไข่มาสเตอร์:
& nbsp; taskmaster.example tm-ต้นแบบ
วางไข่ทาส:
& nbsp; tm-ทาส taskmaster.example
หรือวางไข่ 8 ทาส (แต่ละที่มี threadpool):
& nbsp; tm-วางไข่ taskmaster.example 8
ไม่ชอบฟังก์ชั่นที่มีมนต์ขลังสำหรับการค้นพบหลัก / ทาส? ระบุเป้าหมายของคุณเอง:
& nbsp; taskmaster.example tm-มาสเตอร์: get_jobs $ taskmaster.example tm-ทาส: handle_job
หมายเหตุ: ข้อโต้แย้งทั้งหมดเป็นตัวเลือกและจะเริ่มต้นการ localhost มีคีย์รับรองความถูกต้องไม่มี
ต้องการ .
- งูใหญ่
ความคิดเห็นที่ไม่พบ