前提
celery是分佈式任務隊列,使用起來也十分方便,但是,在項目中會有所限制,不能把相關代碼獨立。導致有時候項目很臃腫。
之前的文章中提到了把celery相關的做成基礎庫,來擺脫限制,但是有些不合理,不能夠使用celery的一些特性,譬如頻率限制等。但是,這也不方便且不合理:做成基礎庫之後需要再每個使用到相關任務的工程所在的機器或是容器裝一遍。
使用原味的celery如何解決
參考之前在github上面有個項目是把rpc服務轉化爲http服務,這樣,rpc服務不僅可以通過rpc調用,也可以通過http調用。
那麼celery是不是可以使用同樣的方法:把celery裏面的任務映射到url上,再包裝到http協議上或是rpc協議上,然後在http或rpc中調用celery的異步方法即可。
這樣做可以把celery中的異步任務獨立出來,做成公共基礎庫,擴展也方便。但是相對於直接使用celery,會有所延遲。
如果是對celery任務執行不需要立馬獲得結果或是有很多個工程都需要進行相同的異步任務處理,那麼,用http封裝起celery是可行的。
此爲本人的個人想法,還未實施。
使用容器方便基礎庫使用:
做一個基礎鏡像包含基礎庫即可