亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python:在django中用celery實(shí)現(xiàn)異步

系統(tǒng) 1662 0

celery英文官方網(wǎng)站:www.celeryproject.org
中文網(wǎng)站:http://docs.jinkan.org/docs/celery/

celery

Celery 是一個(gè)簡(jiǎn)單、靈活且可靠的,處理大量消息的 分布式系統(tǒng) ,并且提供維護(hù)這樣一個(gè)系統(tǒng)的必需工具。
專(zhuān)注于實(shí)時(shí)處理的任務(wù)隊(duì)列,同時(shí)也支持任務(wù)調(diào)度。

作用:

  • 解決耗時(shí)操作:開(kāi)一個(gè)新的進(jìn)程,去操作耗時(shí)操作,不影響原有進(jìn)程 定時(shí)操作,使
  • List item

用celery定時(shí)執(zhí)行

操作:

  1. 定義一個(gè)任務(wù)task,也就是一個(gè)python函數(shù)
  2. 將耗時(shí)任務(wù)存儲(chǔ)到隊(duì)列queue中
  3. 在一個(gè)新的進(jìn)程中,負(fù)責(zé)執(zhí)行隊(duì)列中的任務(wù),worker
  4. broker:負(fù)責(zé)調(diào)度,將任務(wù)加到隊(duì)列中,在布置環(huán)境中使用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'
              
              
                # 把所有的任務(wù)放在queue中,默認(rèn)用0這個(gè)數(shù)據(jù)庫(kù)
              
              
CELERY_IMPORTS 
              
                =
              
              
                (
              
              
                'test1.task'
              
              
                )
              
              
                # 在test1這個(gè)應(yīng)用下使用任務(wù)
              
            
          

在test1應(yīng)用目錄下創(chuàng)建task.pty文件

            
              
                import
              
               time

              
                from
              
               celery 
              
                import
              
               task

@task

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

遷移,生成celery需要的數(shù)據(jù)表
此時(shí)不需要生成遷移,直接進(jìn)行遷移

            
              python manage
              
                .
              
              py migrate

            
          

啟動(dòng)redis

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

            
          

啟動(dòng)worker

            
              python manage
              
                .
              
              py celery worker 
              
                -
              
              
                -
              
              loglevel
              
                =
              
              info

            
          

定義視圖,調(diào)用task
函數(shù)名.delay([參數(shù)])

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

配置url

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

總結(jié):

  • 簡(jiǎn)單:易使用和維護(hù),不需要配置文件
  • 高可用性:如果鏈接丟失或者失敗,客戶(hù)端會(huì)自動(dòng)重試,并broker通過(guò)主/主或者主/從方式復(fù)制來(lái)提高可用性。
  • 快速:?jiǎn)蝹€(gè)celery進(jìn)程每分鐘可處理數(shù)以百萬(wàn)計(jì)的任務(wù)
  • 靈活:celery幾乎所有的部分都可以擴(kuò)展或者單獨(dú)使用。

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: aaaaaa国产毛片孕妇版 | 国产福利一区二区在线观看 | 精品国产免费一区二区三区五区 | 四虎影音 | 国产视频999 | 国产成人精品一区二区不卡 | 精品国产免费一区二区三区五区 | 一级毛片人与动免费观看 | 青青青国产在线 | 女性一级全黄生活片 | 欧美999| 亚洲精品视 | 一级特黄特黄毛片欧美的 | 久久亚洲这里只有精品18 | 国产做人爱三级视频在线 | 狠狠色综合久久婷婷 | 狠狠色狠狠色很很综合很久久 | 国产一级精品高清一级毛片 | 免费看羞羞视频的网站 | 国产成人综合精品 | 中文毛片| 久久精品这里有 | 亚洲成片观看四虎永久 | 久久久受www免费人成 | 欧美一级艳片爽快片 | 一道本免费视频 | 日本一本二本免费播放视频 | 成人网久久 | 国产伊人自拍 | 午夜在线一区 | 天天爱天天爽 | 欧美毛片免费看 | 亚洲美女视频在线观看 | 欧美成人免费xxx大片 | 夜鲁夜鲁夜鲁在线观看福利 | 九9热这里真品 | 精品国产乱码久久久久久浪潮 | 国产一区在线免费观看 | 欧美3区| 亚洲精品综合欧美一区二区三区 | 国内精品久久久久不卡 |