91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用celery執行Django串行異步任務

發布時間:2021-08-10 13:30:49 來源:億速云 閱讀:135 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“如何使用celery執行Django串行異步任務”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何使用celery執行Django串行異步任務”這篇文章吧。

前言

Django項目有一個耗時較長的update過程,希望在接到請求運行update過程的時候,Django應用仍能正常處理其他的請求,并且update過程要求不能并行,也不能漏掉任何一個請求

使用celery的solo模式解決

安裝redis

https://github.com/microsoftarchive/redis/releases

下載.msi文件安裝,會直接將redis注冊為windows服務

安裝celery與redis依賴

pip install celery
pip indatll redis

一個celery應用

# celery_test.py
import time

from celery import Celery

app = Celery('tasks', broker='redis://127.0.0.1:6379/0')


@app.task
def add(x, y):
 time.sleep(5)
 return x + y

啟動celery服務

celery -A celery_test.app worker --pool=solo -l info

查看完整的命令行參數列表

celery worker --help

對celery啟動命令的解釋

  • '-A' 是一個全局配置,定義了APP的位置

  • '--pool' 是POOL的配置,默認是prefork(并發),選擇solo之后,發送的任務不會被并發執行,在worker執行任務過程中,再次發送給worker的任務會排隊,執行完一個再執行另一個

  • '-l' 是WORKER的配置,定義了log級別

調用任務

>>> from celery_test import add
>>> add.delay(4,4)

因為啟動了solo模式,因此,可以看到在一個add沒有執行完前,即使再次發送執行add的任務,celery worker也會等到前一個任務執行完才去執行下一個

與Django結合

在裝載celery應用前先setup django

import time
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "demo.settings")
django.setup()

from celery import Celery

from django_app.update import update

app = Celery('tasks', broker='redis://127.0.0.1:6379/0', backend='redis://127.0.0.1:6379/0')

@app.task
def update_task():
 update()

然后在views中調用task就可以了。

from celery_test import update_task
def update_api(request):
 if request.method == "GET":
  update_task.delay()
  return HttpResponse(status=status.HTTP_200_OK)

執行過程中,程序的print信息會作為celery warning,報錯信息會作為celery error

日志

在啟動應用的時候指定日志文件路徑

-f log_path

不設置這個參數的時候,日志默認輸出到控制臺

以上是“如何使用celery執行Django串行異步任務”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广元市| 庆元县| 佛山市| 顺昌县| 瓦房店市| 襄城县| 东城区| 大悟县| 公主岭市| 亚东县| 明光市| 自贡市| 滦平县| 苍梧县| 西乌| 长子县| 永康市| 九寨沟县| 固原市| 望都县| 丹东市| 三亚市| 孟州市| 龙山县| 鸡东县| 牡丹江市| 宝清县| 海盐县| 喀喇沁旗| 海城市| 阿拉尔市| 南雄市| 石楼县| 景洪市| 郁南县| 黄大仙区| 新丰县| 武强县| 宣恩县| 裕民县| 招远市|