<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      celery筆記二之建立celery項目、配置及幾種加載方式

      本文首發于公眾號:Hunter后端
      原文鏈接:celery筆記二之建立celery項目、配置及幾種加載方式

      接下來我們創建一個 celery 項目,文件夾及目錄如下:

      proj/__init__.py
          /celery.py
          /tasks1.py
          /tasks2.py
      

      接下來我們逐個文件向里面添加內容。

      1、項目文件內容及介紹

      我們建立了一個名為 proj 的文件夾作為我們的項目文件夾,其下有兩個文件,celery.py 和 tasks.py

      celery.py

      其中 celery.py 內容為 celery 實例化以及一些基礎配置,文件內容如下:

      from celery import Celery
      
      app = Celery('proj',
                   broker='redis://localhost/0',
                   backend='redis://localhost/1',
                   include=['proj.tasks1', 'proj.tasks2'])
      
      app.conf.update(
          result_expires=60
      )
      
      if __name__ == '__main__':
          app.start()
      

      在這里,我們還是對 celery 進行了實例化的操作,但是在這里項目名稱改為了 proj,也就是這個文件的上一級文件夾名稱

      broker、backend 還是對應的配置

      但是因為對應的任務我們是單獨以文件的形式引入,所以,在這里引入的方式是通過 include 的方式來實現的

      app.conf.update() 是對 celery 配置的補充,這里只加了一個參數,表示是對系統對結果的留存時間。

      另外幾種配置方式我們放在下面詳講。

      接著 app.start() 就是項目的啟動。

      tasks.py

      在這里我們將 task 作為兩部分拆解,分別放在兩個文件下,內容分別如下

      #tasks1.py
      from .celery import app
      
      @app.task
      def add(x, y):
          return x + y
      
      #tasks2.py
      from .celery import app
      
      @app.task
      def mul(x, y):
          return x * y
      

      啟動服務,在 proj 所在的文件夾,執行下面的命令:

      celery -A proj worker -l INFO
      

      運行延時任務

      在 proj 同級的文件夾下執行 python3,進入 python 的交互界面:

      from proj.tasks1 import add
      add.delay(1, 2)
      

      2、celery配置的幾種方式

      在上面的 celery 的配置方式,是一部分寫在 celery 的實例化過程中,另一部分是通過 app.conf.update() 的方式寫入

      這里介紹一下,celery 的配置還可以通過類的方式來寫入,或者把所有變量都寫入一個文件,通過引入文件的形式來引入變量。

      不管是以類的方式還是文件的形式都會使用到一個方法:config_from_object(),參數為需要引入的變量

      類的方式加載配置

      下面是一個類的方式引入的示例:

      # celery.py
      from celery import Celery
      
      app = Celery()
      class Config:
          include = ['proj.tasks1', 'proj.tasks2']
          broker_url = 'redis://localhost:6379/0'
          result_backend = 'redis://localhost:6379/1'
          
      app.config_from_object(Config)
      
      if __name__ == '__main__':
          app.start()
      

      這里需要注意的是在 Config 中的 broker_url 和 result_backend 與直接實例化 Celery 時寫入的參數名稱是不一樣的

      文件的形式加載配置

      接下來我們在 proj 的文件夾中新建一個文件 celeryconfig.py,那么 proj 文件夾下的文件配置則如下:

      proj/__init__.py
          /celery.py
          /celeryconfig.py
          /tasks1.py
          /tasks2.py
      

      配置文件內容:

      # celeryconfig.py
      broker_url = 'redis://localhost/0'
      result_backend = 'redis://localhost/1'
      include = ['proj.tasks1', 'proj.tasks2']
      

      celery 文件內容:

      # celery.py
      from celery import Celery
      from . import celeryconfig
      
      
      app = Celery()
      app.config_from_object(celeryconfig)
      
      if __name__ == '__main__':
          app.start()
      

      無論是把配置寫入 Config 類中,還是寫入文件,這里的思想都是將配置集中處理,在一處管理所有的配置內容。

      注意:
      在這里我們引入配置的方式都是 config_from_object(),我們之前還介紹過一個更新配置的方式是 app.conf.update()

      這里要說明的是,只要運行了 config_from_object() 函數,在此之前的變量都會被覆蓋失效,如果我們要新增 celeryconfig 之外的配置,則需要在調用 config_from_object() 函數之后調用,比如:

      
      app = Celery()
      
      app.conf.update(result_expires=60) # 在 config_from_config() 之前調用,會失效
      
      app.config_from_object(celeryconfig)
      
      app.conf.update(result_expires=30)  # 這個配置會生效
      

      還有一種引入配置的方式是在 Django 系統中,將 Celery 相關的變量都寫入 settings.py,然后通過 namespace 的方式引入到 Celery 中進行實例化處理。

      這個方式我們在介紹 celery 與 Django 結合的時候再做介紹。

      3、一些基本配置

      設置時區

      比如我們設置北京時間:

      app.conf.update(
          enable_utc=False,
          timezone='Asia/Shanghai',
      )
      

      broker 和 result_backend 設置

      設置 broker 和 result_backend 的地址:

      app.conf.update(
          broker_url = 'redis://localhost:6379/0'
          result_backend = 'redis://localhost:6379/1'
      )
      

      如果是 broker 和 backend 加密碼的配置,則是如下:

      app.conf.update(
          broker_url = 'redis://:123456@localhost:6380/0'
          result_backend = 'redis://:123456@localhost:6380/1'
      )
      

      其中,123456 是密碼。

      如果是用 docker 啟動一個帶密碼的 redis,命令如下:

      docker run -d --name redis_pwd -p6380:6379 redis:latest --requirepass 123456
      

      此外還有一些任務隊列 queue、默認隊列、任務路由配置、定時任務的設置,在后面介紹到的時候再一一介紹。

      下一篇筆記將介紹 task 和 task 的調用。

      如果想獲取更多后端相關文章,可掃碼關注閱讀:
      image

      posted @ 2023-06-02 20:50  XHunter  閱讀(323)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 妺妺窝人体色www聚色窝仙踪| 老司机亚洲精品一区二区| 亚洲精品福利一区二区三区蜜桃| 久久综合综合久久综合| 伊宁县| 91在线国内在线播放老师| 康定县| 在线观看国产成人av片| 国产偷国产偷亚洲高清日韩 | 日韩精品中文字幕有码 | 日韩精品一区二区蜜臀av| 少妇被粗大的猛进出69影院| 国产区精品福利在线熟女| 中文字幕人妻色偷偷久久| 无码中文字幕人妻在线一区| 少妇伦子伦精品无吗| 久久久精品2019中文字幕之3| 久久久久香蕉国产线看观看伊| 色欲av亚洲一区无码少妇| 亚洲熟女国产熟女二区三区| 99久久er热在这里只有精品99| 少妇被躁爽到高潮| 日韩乱码视频一区二区三区 | 亚洲国产午夜精品福利| 久久99精品九九九久久婷婷| 好紧好滑好湿好爽免费视频| 国产综合久久久久鬼色| 永久免费无码国产| 亚洲国产午夜精品理论片| 亚洲性图日本一区二区三区| 亚洲另类激情专区小说图片| 国产精品免费AⅤ片在线观看| 人妻中文字幕一区二区视频| 97精品久久九九中文字幕| 亚洲熟妇丰满多毛xxxx| 亚洲国产午夜精品理论片| 日本一区二区三本视频在线观看| 熟女精品视频一区二区三区| 99精品国产综合久久久久五月天 | 日韩理伦片一区二区三区| 久久亚洲国产精品久久|