คำถามติดแท็ก celery

2
ทำไมเราต้องมีโบรกเกอร์ข้อความอย่าง RabbitMQ บนฐานข้อมูลอย่าง PostgreSQL
ฉันใหม่เพื่อโบรกเกอร์ข้อความเช่นRabbitMQที่เราสามารถใช้ในการสร้างงาน / คิวข้อความสำหรับระบบการตั้งเวลาเช่นคื่นฉ่าย ตอนนี้นี่คือคำถาม: ฉันสามารถสร้างตารางในPostgreSQLซึ่งสามารถผนวกเข้ากับงานใหม่และบริโภคโดยโปรแกรมผู้บริโภคเช่น Celery ทำไมบนโลกนี้ฉันต้องการตั้งค่าเทคโนโลยีใหม่ทั้งหมดสำหรับ RabbitMQ นี้ ตอนนี้ฉันเชื่อว่าการปรับสเกลไม่สามารถตอบได้เนื่องจากฐานข้อมูลของเราเช่น PostgreSQL สามารถทำงานในสภาพแวดล้อมแบบกระจาย ฉัน googled สำหรับปัญหาใดที่ฐานข้อมูลโพสท่าสำหรับปัญหาเฉพาะและฉันพบ: การสำรวจความคิดเห็นทำให้ฐานข้อมูลไม่ว่างและมีประสิทธิภาพต่ำ การล็อคตาราง -> มีประสิทธิภาพต่ำอีกครั้ง งานหลายล้านแถว -> อีกครั้งการสำรวจมีประสิทธิภาพต่ำ ทีนี้ RabbitMQ หรือนายหน้าข้อความอื่น ๆ แบบนั้นแก้ปัญหาเหล่านี้ได้อย่างไร นอกจากนี้ฉันพบว่าAMQPโปรโตคอลเป็นสิ่งต่อไปนี้ มีอะไรที่ยอดเยี่ยมในเรื่องนี้? สามารถRedisยังสามารถใช้เป็นโบรกเกอร์ข้อความหรือไม่? ฉันพบว่ามันคล้ายกับ Memcached มากกว่า RabbitMQ กรุณาส่องไฟนี้!




2
ข้อดีข้อเสียในการใช้คื่นฉ่ายเทียบกับ RQ [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ตอนนี้ฉันกำลังทำงานในโครงการ python ที่ต้องใช้งานเบื้องหลังบางอย่าง (ส่วนใหญ่เป็นการส่งอีเมลและการอัปเดตฐานข้อมูลจำนวนมาก) ฉันใช้ Redis สำหรับนายหน้างาน ดังนั้นในจุดนี้ผมมีสองผู้สมัคร: คื่นฉ่ายและRQ ฉันมีประสบการณ์เกี่ยวกับคิวงานเหล่านี้มาบ้าง แต่ฉันอยากขอให้พวกคุณแบ่งปันประสบการณ์การใช้เครื่องมือนี้ ดังนั้น. ข้อดีข้อเสียในการใช้ Celery กับ RQ คืออะไร ตัวอย่างของโครงการ / งานที่เหมาะสมในการใช้ขึ้นฉ่ายเทียบกับ RQ คื่นฉ่ายดูค่อนข้างซับซ้อน แต่เป็นโซลูชันที่มีคุณสมบัติครบถ้วน อันที่จริงฉันไม่คิดว่าฉันต้องการคุณสมบัติทั้งหมดนี้ จากด้านอื่น ๆ RQ นั้นง่ายมาก (เช่นการกำหนดค่าการรวม) แต่ดูเหมือนว่าจะขาดคุณสมบัติที่มีประโยชน์บางอย่าง (เช่นการเพิกถอนงานการโหลดโค้ดอัตโนมัติ)

30
ขึ้นฉ่ายรับงานที่ไม่ได้ลงทะเบียนประเภท (เรียกใช้ตัวอย่าง)
ฉันพยายามเรียกใช้ตัวอย่างจากเอกสารขึ้นฉ่าย ฉันวิ่ง: celeryd --loglevel=INFO /usr/local/lib/python2.7/dist-packages/celery/loaders/default.py:64: NotConfigured: No 'celeryconfig' module found! Please make sure it exists and is available to Python. "is available to Python." % (configname, ))) [2012-03-19 04:26:34,899: WARNING/MainProcess] -------------- celery@ubuntu v2.5.1 ---- **** ----- --- * *** * -- [Configuration] -- * - **** --- . broker: amqp://guest@localhost:5672// …
99 python  celery 

5
ยกเลิกงานที่กำลังดำเนินการกับคื่นฉ่าย?
ฉันอ่านเอกสารและค้นหา แต่ไม่พบคำตอบที่ตรงใจ: คุณสามารถยกเลิกงานที่กำลังดำเนินการอยู่ได้หรือไม่? (เนื่องจากในงานได้เริ่มต้นขึ้นใช้เวลาสักครู่และจะต้องยกเลิกไปครึ่งทาง) ฉันพบสิ่งนี้จากเอกสารที่คำถามที่พบบ่อยเกี่ยวกับผักชีฝรั่ง >>> result = add.apply_async(args=[2, 2], countdown=120) >>> result.revoke() แต่ฉันไม่ชัดเจนว่าการดำเนินการนี้จะยกเลิกงานที่อยู่ในคิวหรือจะฆ่ากระบวนการทำงานของคนงาน ขอบคุณสำหรับแสงที่ส่องได้!

13
จะตรวจสอบสถานะงานในคื่นฉ่ายได้อย่างไร?
เราจะตรวจสอบได้อย่างไรว่างานกำลังทำงานในคื่นฉ่าย (โดยเฉพาะฉันใช้คื่นฉ่าย django) ฉันได้อ่านเอกสารและ googled แต่ฉันไม่เห็นการโทรเช่น: my_example_task.state() == RUNNING กรณีการใช้งานของฉันคือฉันมีบริการภายนอก (java) สำหรับการแปลงรหัส เมื่อฉันส่งเอกสารที่จะแปลงรหัสฉันต้องการตรวจสอบว่างานที่เรียกใช้บริการนั้นกำลังทำงานอยู่หรือไม่และหากไม่เป็นเช่นนั้นให้เริ่มต้นใหม่ ฉันใช้เวอร์ชันเสถียรปัจจุบัน - 2.4 ฉันเชื่อ

1
กระจายคิวงาน (เช่นคื่นฉ่าย) เทียบกับสคริปต์ crontab
ฉันมีปัญหาในการทำความเข้าใจวัตถุประสงค์ของ 'คิวงานแบบกระจาย' ยกตัวอย่างเช่นงูหลามเป็นห้องสมุดคื่นฉ่าย ฉันรู้ว่าในคื่นฉ่ายซึ่งเป็นเฟรมเวิร์กของไพ ธ อนคุณสามารถตั้งค่าหน้าต่างที่กำหนดเวลาเพื่อให้ฟังก์ชันทำงาน อย่างไรก็ตามสามารถทำได้อย่างง่ายดายใน linux crontab ที่กำกับไว้ที่สคริปต์ python และเท่าที่ฉันรู้และแสดงจากเว็บแอป django-celery ของฉันเองคื่นฉ่ายใช้หน่วยความจำ RAM มากกว่าการตั้งค่า crontab ดิบ ความแตกต่างเพียงไม่กี่ร้อย MB สำหรับแอปที่ค่อนข้างเล็ก ใครสามารถช่วยฉันด้วยความแตกต่างนี้? บางทีคำอธิบายระดับสูงเกี่ยวกับวิธีการทำงานของคิวงาน / crontabs โดยทั่วไปก็น่าจะดีเช่นกัน ขอบคุณ.
92 python  django  celery 

1
Django ทำงานในอนาคตอันใกล้
Eventสมมติว่าฉันมีรูปแบบ ฉันต้องการส่งการแจ้งเตือน (อีเมล, กด, อะไรก็ได้) ให้กับผู้ใช้ที่ได้รับเชิญทุกคนเมื่อเหตุการณ์ผ่านไป บางสิ่งบางอย่างตาม: class Event(models.Model): start = models.DateTimeField(...) end = models.DateTimeField(...) invited = models.ManyToManyField(model=User) def onEventElapsed(self): for user in self.invited: my_notification_backend.sendMessage(target=user, message="Event has elapsed") ตอนนี้แน่นอนส่วนที่สำคัญคือการเรียกใช้เมื่อใดก็ตามที่onEventElapsed timezone.now() >= event.endโปรดทราบendอาจเป็นเดือนจากวันที่ปัจจุบัน ฉันคิดเกี่ยวกับวิธีพื้นฐานสองวิธีในการทำสิ่งนี้: ใช้cronงานเป็นระยะ(พูดทุก ๆ ห้านาทีหรือมากกว่านั้น) ซึ่งจะตรวจสอบว่ามีเหตุการณ์ใด ๆ เกิดขึ้นภายในห้านาทีที่ผ่านมาและดำเนินการตามวิธีการของฉัน ใช้celeryและกำหนดเวลาonEventElapsedโดยใช้etaพารามิเตอร์ที่จะเรียกใช้ในอนาคต (ภายในsaveเมธอดmodel ) เมื่อพิจารณาถึงตัวเลือกที่ 1 ทางออกที่อาจเกิดขึ้นได้ django-celery-beatได้ อย่างไรก็ตามดูเหมือนว่าจะแปลกเล็กน้อยในการเรียกใช้งานในช่วงเวลาคงที่สำหรับการส่งการแจ้งเตือน นอกจากนี้ฉันยังพบกับปัญหา (ที่อาจเกิดขึ้น) ที่จะ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.