簡體   English   中英

Django +芹菜+請求+事件

[英]Django + Celery + Requests + Eventlet

我有一個Django + Celery項目。 Celery任務之一使用請求庫執行許多小型HTTP請求,而其他任務則通過Django ORM與數據庫進行大量對話。 繁重的HTTP任務已經使用自己的Celery隊列在其自己的celery worker中運行。 我想讓HTTP繁重的工作人員使用eventlet,而其余的任務留給prefork執行池使用。 我該怎么做呢?

Celery文檔似乎建議我通過運行celery ... -P eventlet獲得神奇的並發能力。 但是, 這樣的答案說我需要使用請求庫的修補版本。 哪個是對的? 另外,如果我必須顯式修補請求,是否必須將此任務與其余常規任務放在單獨的模塊中,以便其他任務可以繼續使用常規版本的請求?

TL,DR:使用請求庫的修補版本。 無需啟動單獨的模塊。

celery -P eventlet使您的celery作業並發。 他們可能會或可能不會調用eventlet.monkey_patch()使所有代碼兼容。 他們將來也可能會更改它。 明確使用修補程序版本可消除歧義,同時還提供有用的文檔。

將並發requests與阻塞分開是沒有意義的。 您的prefork池也可以使用並發版本。 Eventlet不會因不良而使事物中毒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM