欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Django中如何使用django-celery完成異步任務

這期內(nèi)容當中小編將會給大家?guī)碛嘘PDjango中如何使用django-celery完成異步任務 ,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創(chuàng)新互聯(lián)長期為上1000家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為西豐企業(yè)提供專業(yè)的網(wǎng)站制作、成都做網(wǎng)站,西豐網(wǎng)站改版等技術服務。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

Django中如何使用django-celery完成異步任務 

安裝Celery

我們可以使用pip在vietualenv中安裝:

 pip install django-celery  celery

django settings設置

  1. import djcelery


  2. djcelery.setup_loader()

  3. BROKER_URL = 'redis://127.0.0.1:6379/2'   ---使用redis當消息隊列



注冊

  1. INSTALLED_APPS = [

  2.     'django.contrib.admin',

  3.     'django.contrib.auth',

  4.     'django.contrib.contenttypes',

  5.     'django.contrib.sessions',

  6.     'django.contrib.messages',

  7.     'django.contrib.staticfiles',

  8.     'devops',

  9.     'apps',

  10.     'common',

  11.     'djcelery',

  12. ]



在apps下創(chuàng)建一個task.py文件

  1. from celery import task


  2. @task

  3. def add(x, y):

  4.     return x + y

 

  @task
 def pp():
 return 'ffffffffffffffffffffff'


返回settings將其導入進去

  1. import djcelery

  2. djcelery.setup_loader()

  3. BROKER_URL = 'redis://127.0.0.1:6379/2'

  4. CELERY_IMPORTS = ('apps.task')


隨意選個views中的方法調(diào)用改task測試下

  1. #項目列表

  2. def project_list(request):

  3.     admin = Admin.objects.get(id=get_current_admin_id(request))

  4.     pt=admin.projects.all().order_by('-id')

  5.    

  6.     from apps import task

  7.     tt=task.add.delay(2,2)

  8.     print 'vvvvvvvvvvvvvvvvvvvv',tt              -----訪問該功能時調(diào)用task的add方法


  9.     page_objects = pages(pt, request, 5) ##分頁

  10.     return render_to_response('project/project_list.html',locals())



安裝啟動redis:略

啟動runserver 與 celery

  1. python manage.py runserver

  2. python manage.py celery worker --loglevel=info



訪問對應的頁面看日志

  1. [2017-11-10 14:55:17,016: INFO/MainProcess] Task apps.task.add[9bafe6d2-8411-4f5f-8eed-10444da0ae3a] succeeded in 0.00280212797225s: 4   --可以看到worker日志,返回結果



手工測試task
  1. 打開新的terminal, 激活virtualenv, 并切換到django項目目錄:

  2.     $ python manage.py shell

  3.     >>> from apps.task import add

  4.     >>> add.delay(2, 2)

  5. 此時, 你可以在worker窗口中看到worker執(zhí)行該task:

  6.     [2014-10-07 08:47:08,076: INFO/MainProcess] Got task from broker: myapp.tasks.add[e080e047-b2a2-43a7-af74-d7d9d98b02fc]

  7.     [2014-10-07 08:47:08,299: INFO/MainProcess] Task myapp.tasks.add[e080e047-b2a2-43a7-af74-d7d9d98b02fc] succeeded in 0.183349132538s: 4


Eager模式
  1. Eager模式

  2. 如果在settings.py設置:

  3.     CELERY_ALWAYS_EAGER = True


  1. 那么Celery便以eager模式運行, 則task便不需要加delay運行:

  2.     # 若啟用eager模式, 則以下兩行代碼相同

  3.     add.delay(2, 2)

  4.     add(2, 2)



dj-celery 定時任務
  1. settings配置添加


     如果需要傳參可以這樣寫


    1. CELERYBEAT_SCHEDULE = {

    2.    'add-every-3-minutes': {

    3.        'task': 'apps.task.add',

    4.        'schedule': timedelta(seconds=3),

    5.         'args': (16, 16)

    6.    },

    7. }

    8. CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' # 定時任務

    9. CELERYBEAT_SCHEDULE = {

    10.    'add-every-3-seconds': {

    11.        'task': 'apps.task.pp',

    12.        'schedule': timedelta(seconds=3)   ---每隔3秒 執(zhí)行task下的pp函數(shù)

    13.    },

    14. }

  2. 啟動celery beat

    1. 其實還有一種簡單的啟動方式worker和beat一起啟動:

    2. python manage.py celery worker --loglevel=info --beat

    3. 啟動beat

    4. 執(zhí)行定時任務時, Celery會通過celerybeat進程來完成. Celerybeat會保持運行, 一旦到了某一定時任務需要執(zhí)行時, Celerybeat便將其加入到queue中. 不像worker進程, Celerybeat只有需要一個即可.

    5. 啟動:

    6. python manage.py celery beat --loglevel=info

  3. 查看worker日志

    1. [2017-11-10 16:17:25,853: INFO/MainProcess] Received task: apps.task.pp[8a3af6fb-5189-4647-91f2-8aa07489dd1e]

    2. [2017-11-10 16:17:25,858: INFO/MainProcess] Task apps.task.pp[8a3af6fb-5189-4647-91f2-8aa07489dd1e] succeeded in 0.00379144400358s: 'ffffffffffffffffffffff'

    3. [2017-11-10 16:17:28,858: INFO/MainProcess] Received task: apps.task.pp[d87e4ea0-8881-449a-b993-e7657f50ef25]

    4. [2017-11-10 16:17:28,864: INFO/MainProcess] Task apps.task.pp[d87e4ea0-8881-449a-b993-e7657f50ef25] succeeded in 0.0049942266196s: 'ffffffffffffffffffffff'

    5. [2017-11-10 16:17:31,859: INFO/MainProcess] Received task: apps.task.pp[4d05b4f3-92ff-4922-a8f4-7e047749239a]

    6. [2017-11-10 16:17:31,865: INFO/MainProcess] Task apps.task.pp[4d05b4f3-92ff-4922-a8f4-7e047749239a] succeeded in 0.00537821277976s: 'ffffffffffffffffffffff'

    7. [2017-11-10 16:17:34,859: INFO/MainProcess] Received task: apps.task.pp[5b21afc1-ebf1-4858-be68-20b9bf318452]

    8. [2017-11-10 16:17:34,865: INFO/MainProcess] Task apps.task.pp[5b21afc1-ebf1-4858-be68-20b9bf318452] succeeded in 0.00530335493386s: 'ffffffffffffffffffffff'


補充還有另外一種方法那就是celery

上述就是小編為大家分享的Django中如何使用django-celery完成異步任務 了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁題目:Django中如何使用django-celery完成異步任務
網(wǎng)站地址:http://aaarwkj.com/article4/ijhiie.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、做網(wǎng)站網(wǎng)站內(nèi)鏈、網(wǎng)站維護、虛擬主機、網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
日韩亚洲天堂视频免费观看| 97门久欧美日韩久久| 欧美激情三级一区二区| 日韩在线观看视频有码| 国产成十人十综合十亚洲| 女同毛片一区二区三区| 日韩人妻系列在线观看| 亚洲国产成人av精品精品国产自| 精品亚洲欧美日韩国产| 四季一区二区三区av| 风间由美亚洲一区二区三区 | 久久综激情丁香开心婷婷| 免费又色又爽无遮挡网站| 韩国av电影免费观看| 亚洲精品一区二区三区不卡 | 日韩精品视频在线不卡| 97免费公开在线观看| 亚洲国产男同日韩小鲜肉| 亚洲精品一区二区三区香蕉| 欧美成人精品欧美一级黄片| 午夜福利一区二区在线| 伊人久久亚洲精品综合| 国产伦奸在线播放免费| 国产91久久精品一区二区| 尤物在线免费观看视频| 欧美高清视频看片在线观看| 久久精品国产亚洲av麻豆花絮| 日韩黄色一级免费在线观看| 成人色视频免费在线观看| 亚洲国产99在线精品一区| 久久人妻一区二区三区免费密臀| 日本加勒比高清在线播放| 亚洲综合一区二区三区四区在线 | 午夜av在线毛片免费观看| 日本加勒比一道本东京热| 97在线视频在线播放| 美女午夜福利精品视频| 亚洲人妻乱人伦中文字幕在线| 日韩日美日韩av影视| 亚洲av激情码国产一区| 传媒视频在线免费观看|