2013-09-05 13 views
7

bir RQ işin bir zaman aşımı yakalamak için iyi bir yol bulmaya çalışmak, bu nedenle zaman aşımı sonra requeued edilebilir.Python'da RQ zaman aşımları nasıl doğru bir şekilde yakalanır ve işler?

Temelde, bir yol sağlayacak doğru çözüm (örneğin, işçinin veya tür bir şey bir istisna işleyicisi) aşımına uğradı işi yeniden kuyruklandırabilir için. Ayrıca, iş failed sırasına geri dönerse, bu da iyi bir yanıt.

Çok teşekkürler! Herhangi bir yardım takdir edilecektir! Eğer exception handling kullanmak istediğiniz gibi

cevap

3

geliyor. Belgelerden:

İşler, oluşan istisnalar nedeniyle başarısız olabilir. RQ işçileriniz arka planda 'da çalıştığında, bu istisnalardan nasıl haberdar olursunuz?

Varsayılan: Başarısız kuyruk RQ için varsayılan güvenlik ağı başarısız kuyruk olduğunu. Yürütme başarısız olan her iş burada, istisna bilgisiyle (tür, değer, geri izleme) birlikte saklanır. Bu, 'u başarısız kılan hiçbir işin "kaybolmasını" sağlarken, bu, 'u iş arızası hakkında proaktif olarak haberdar etmek için kullanılamaz. sürümünden 0.3.1 başlayarak

Özel istisna yükleyiciler, RQ kayıt özel istisna işleyicileri destekler. Bu sayede tamamen (başarısız sıraya işi gönderme) varsayılan davranışı değiştirmek veya bir özel durum oluştuğunda ek adımlar için kolaylaştırır.

Ayrıca REDIS işler anahtar olarak job_id ve skor olarak time.time() + timeout seti resmedebilirler depolamak ve sonra zamanlanmış aşımı iş olarak döndü her neyse bir işçi çalıştırmak ZRANGEBYSCORE sorted_set 0 [current_time] ve süreci olabilir.

+2

Teşekkürler! Doğru. Gelecekteki başvurular için, iş, çalışan istisnası işleyicisi tarafından işlenebilen bir “JobTimeoutException” u yükseltir, ancak bunu tanımlamayı seçersiniz. –

İlgili konular