二、Celery基本配置

1、安裝celery的redis依賴:pip install -U "celery[redis]"
2、配置redis位置:app.conf.broker_url = "redis://:password@hostname:port/db_number"
使用Unix套接字連接:redis+socket:///path/to/redis.sock
virtual_host參數添加到url:redis+socker:///path/to/redis.sock?virtual_host=db_number
http://docs.celeryproject.org/en/latest/getting-started/brokers/redis.html
3、可見性超時時間定義了等待職程在消息分派到其他職程之前確認收到任務的秒數:
app.conf.broker_transport_options = {'visibility_timeout': 3600}	#默認一個小時
4、在redis中存儲狀態和返回任務值:app.conf.broker_backend = redis://localhost:6379/0	#格式同2
5、廣播信息默認對所有虛擬主機可見。你需要設置一個傳輸選項來給消息加上前綴,這樣消息只會被
活動的虛擬主機收到:
app.conf.broker_transport_options = {'fanout_prefix': True} 
6、默認情況下,工作人員將收到所有與任務相關,作人員只能訂閱與工作人員相關的事件:
app.conf.broker_transport_options = {'fanout_patterns': True}
7、如果任務沒有在 可見性超時 內確認接收,任務會被重新委派給另一個職程並執行。
這會在預計到達時間/倒計時/重試這些執行時間超出可見性超時時間的任務上導致問題;事實上如果超
時,任務將循環重新執行。
所以你需要增大可見性超時時間,以符合你計劃使用的最長預計到達時間。
注意 Celery 會在職程關閉的時候重新分派消息,所以較長的可見性超時時間只會造成在斷電或強制終止
職程之後“丟失”任務重新委派的延遲。

週期任務不會受可見性超時影響,因爲這是一個與預計到達時間/倒計時不同的概念。
app.conf.broker_transport_options = {'visibility_timeout': 43200}	#該值必須是int類型,單位爲秒

8、Redis 在某些情況會從數據庫中驅除鍵。如果遇到了類似這樣的錯誤:
InconsistencyError: Probably the key ('_kombu.binding.celery') has been
removed from the Redis database.
配置redis-server的timeout參數爲0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章