其實本文就是我看完Celery的官方文檔指南的讀書筆記。而後因爲個人懶,只看完了那些入門指南,原文地址:First Steps with Celery,Next Steps,Using Celery with Django。ps:本文基於celery版本4.0.2html
其實先要理解Celery是幹什麼的,在個人我的理解裏,他是用來管理消息隊列的,具體一點講就是,有一百個任務要分給十我的作,Celery就是負責分這一部分的工做。git
在這個入門指南里,官方文檔給出了存放這這一百個任務的最佳儲存方式,就是RabbitMQ
,其次的話就是Redis
。github
安裝的話就直接用萬能的pip
就能夠了。數據庫
在具體聲明任務,調用任務這一塊,文檔給了很是簡單的例子,我的感受還要找其餘稍微複雜一點的例子才能更好地理解是怎麼用的。django
而關於保存任務運行結果,也是能夠放在RebbitMQ
裏或者其餘數據庫裏。app
至於配置文件,在剛入門這個狀況下,只用默認就夠了。函數
這一章也只是簡單地介紹一些celery的特性,想要更詳細的必需要看使用指南。工具
好比如何在咱們的應用裏用Celery,在咱們應用的根目錄下,建立celery.py
和tasks.py
,前者負責生成和配置一個celery的實例,後者則是負責聲明任務,任務的形式與聲明普通函數相似,就是要在這些函數上面加上一個特定的裝飾器。優化
那麼如何調用這個 celery這個實例呢,文檔給出的示例是用命令行啓動。而調用任務的話,就是用任務的delay()
方法。命令行
在調用任務這部分,celery提供了一些有用的API,好比延時功能,偏函數賦值功能(就是先給一部分參數,後面再給另一部分參數)。
celery還內置了一些基礎的任務基元(不懂翻譯這個),就是輔助咱們構造出複雜的工做流程的工具。
任務路由方面,能夠在配置文件中定製,在能夠在命令行運行的時候以參數形式傳入。
遠程控制這部分暫時跳過。
時區設置,能夠在配置文件中設置。
優化方面,默認配置是針對普通狀況的,想要進一步優化就要看優化文檔。不過若是有使用RabbitMQ
的話,能夠用librabbitmq
這個庫。
Django和Celery是有特殊的合做方式的。
project
的文件夾下建立celery.py
文件,如前文所講,這個文件的任務就是配置並實例化celery。__init__.py
,目的是爲了啓動項目時候,會導入celery.py
。tasks.py
來聲明任務,值得注意的就是,這些任務須要用到@shared_task
這個裝飾器。具體的話能夠看官方的例子