日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python:在django中用celery實現異步

系統 1796 0

celery英文官方網站:www.celeryproject.org
中文網站:http://docs.jinkan.org/docs/celery/

celery

Celery 是一個簡單、靈活且可靠的,處理大量消息的 分布式系統 ,并且提供維護這樣一個系統的必需工具。
專注于實時處理的任務隊列,同時也支持任務調度。

作用:

  • 解決耗時操作:開一個新的進程,去操作耗時操作,不影響原有進程 定時操作,使
  • List item

用celery定時執行

操作:

  1. 定義一個任務task,也就是一個python函數
  2. 將耗時任務存儲到隊列queue中
  3. 在一個新的進程中,負責執行隊列中的任務,worker
  4. broker:負責調度,將任務加到隊列中,在布置環境中使用redis

安裝包

            
              pip install celery
pip install celery
              
                -
              
              
                with
              
              
                -
              
              redis
pip install django
              
                -
              
              celery

            
          

配置settings
將djcelery包加入到INSTALLED_APPS中
并添加以下代碼:

            
              
                import
              
               djcelery
djcelery
              
                .
              
              setup_loader
              
                (
              
              
                )
              
              
                # 初始化所有的task
              
              
BROKER_URL 
              
                =
              
              
                'redis://127.0.0.1:6379/0'
              
              
                # 把所有的任務放在queue中,默認用0這個數據庫
              
              
CELERY_IMPORTS 
              
                =
              
              
                (
              
              
                'test1.task'
              
              
                )
              
              
                # 在test1這個應用下使用任務
              
            
          

在test1應用目錄下創建task.pty文件

            
              
                import
              
               time

              
                from
              
               celery 
              
                import
              
               task

@task

              
                def
              
              
                show
              
              
                (
              
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              
                'hello...'
              
              
                )
              
              
	time
              
                .
              
              sleep
              
                (
              
              
                5
              
              
                )
              
              
                print
              
              
                (
              
              
                'world...'
              
              
                )
              
            
          

遷移,生成celery需要的數據表
此時不需要生成遷移,直接進行遷移

            
              python manage
              
                .
              
              py migrate

            
          

啟動redis

            
              sudo redis
              
                -
              
              server 
              
                /
              
              etc
              
                /
              
              redis
              
                /
              
              redis
              
                .
              
              conf

            
          

啟動worker

            
              python manage
              
                .
              
              py celery worker 
              
                -
              
              
                -
              
              loglevel
              
                =
              
              info

            
          

定義視圖,調用task
函數名.delay([參數])

            
              
                from
              
               task 
              
                import
              
              
                *
              
              
                def
              
              
                celeryTest
              
              
                (
              
              request
              
                )
              
              
                :
              
              
	show
              
                .
              
              delay
              
                (
              
              
                )
              
              
                return
              
               HttpResponse
              
                (
              
              
                'ok'
              
              
                )
              
            
          

配置url

            
              url
              
                (
              
              r
              
                '^celerytest/$'
              
              
                ,
              
               views
              
                .
              
              celeryTest
              
                )
              
              
                ,
              
            
          

總結:

  • 簡單:易使用和維護,不需要配置文件
  • 高可用性:如果鏈接丟失或者失敗,客戶端會自動重試,并broker通過主/主或者主/從方式復制來提高可用性。
  • 快速:單個celery進程每分鐘可處理數以百萬計的任務
  • 靈活:celery幾乎所有的部分都可以擴展或者單獨使用。

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 红河县| 泸州市| 顺平县| 贺兰县| 长海县| 民权县| 长泰县| 广昌县| 石台县| 南昌市| 南涧| 渭南市| 宝应县| 香河县| 万宁市| 连城县| 深州市| 七台河市| 观塘区| 南安市| 马尔康县| 翁牛特旗| 渝北区| 张家口市| 都江堰市| 富宁县| 泽普县| 高尔夫| 上杭县| 白山市| 西藏| 青铜峡市| 包头市| 怀仁县| 兴城市| 永川市| 辽中县| 石屏县| 金华市| 隆尧县| 南川市|