Celery FAQ

什么時候使用celery

隊列化所有的東西。適用于后臺任務(wù)、在處理完web請求后還有工作需要做、確保某件事會被完成(異步的執(zhí)行它并啟用重試)、規(guī)劃定時任務(wù)。此外可以考慮分布式計算和并發(fā)的意義。

celery的依賴項

kombu 用于發(fā)送和接收消息,支持多種消息中間件。

kombu依賴amqp(純python實現(xiàn)的amqp客戶端)

billiard 多線程庫,性能、穩(wěn)定性更好。

pytz 提供了timezone和相關(guān)工具

[MySQL is throwing deadlock errors]

mysql的默認(rèn)隔離級別是REPEATABLE-READ,可以設(shè)置為READ-COMMITTED,更多可見MySQL - The InnoDB Transaction Model and Locking

task just hang

可能是到中間件的權(quán)限沒配置好

[Worker doesn’t start: Permission Error]

如果使用的是 Debian, Ubuntu 或者其他的Debian-based的Linux發(fā)行版,注意/dev/shm 已經(jīng)被替換為 /run/shm。

簡單的解決方法:

# ln -s /run/shm /dev/shm

如果使用了 [--pidfile], [--logfile] [--statedb] 這些選項,需要保證擁有指定路徑的讀寫權(quán)限。

[Result backend doesn’t work or tasks are always in PENDING state]

所有的任務(wù)默認(rèn)都是 [PENDING] 狀態(tài),Celery在發(fā)送了該任務(wù)后也不會改變狀態(tài),之前沒有過記錄的任務(wù)也是PENDING。

首先確保該任務(wù)沒有設(shè)置 ignore_result

確保沒有設(shè)置 task_ignore_result

檢查是否有之前啟動的工作進(jìn)程沒有關(guān)閉,由于是可以同時啟動多個工作進(jìn)程的,可能你在啟動新進(jìn)程時忘記關(guān)閉之前的工作進(jìn)程了,而之前的工作進(jìn)程可能沒有配置記錄結(jié)果選項。

可以把 [--pidfile] 設(shè)成一個絕對路徑可避免這種情況發(fā)生。

確保結(jié)果backend正常:

result = task.delay()
print(result.backend)

應(yīng)該使用retry還是ack late

Django

Windows

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 序言第1章 并行和分布式計算介紹第2章 異步編程第3章 Python的并行計算第4章 Celery分布式應(yīng)用第5章...
    SeanCheney閱讀 12,789評論 3 35
  • task是一個類,扮演了兩方面的角色:任務(wù)被調(diào)用時來發(fā)送消息、工作進(jìn)程在收到消息時操作。task的名稱則是標(biāo)志,這...
    xncode閱讀 16,602評論 0 11
  • Celery 部署小記 參考版本: 4.0.2 概念 舊版中文翻譯 最新版英文文檔 以下摘自官方文檔的翻譯: Ce...
    esrever閱讀 5,251評論 0 1
  • 1.定義: Celery是一個異步的任務(wù)隊列(也叫做分布式任務(wù)隊列) 2.工作結(jié)構(gòu) Celery分為3個部...
    四號公園_2016閱讀 28,950評論 5 60
  • Game Kit 的核心功能在于為 iOS 應(yīng)用提供了另一個點到點的網(wǎng)絡(luò)選項. 在傳統(tǒng)的網(wǎng)絡(luò)配置中, Game K...
    spbreak閱讀 409評論 0 0

友情鏈接更多精彩內(nèi)容