使用celery執(zhí)行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
查看完整的命令行參數(shù)列表
celery worker --help
對celery啟動命令的解釋
- '-A' 是一個全局配置,定義了APP的位置
- '--pool' 是POOL的配置,默認是prefork(并發(fā)),選擇solo之后,發(fā)送的任務不會被并發(fā)執(zhí)行,在worker執(zhí)行任務過程中,再次發(fā)送給worker的任務會排隊,執(zhí)行完一個再執(zhí)行另一個
- '-l' 是WORKER的配置,定義了log級別
調(diào)用任務
>>> from celery_test import add >>> add.delay(4,4)
因為啟動了solo模式,因此,可以看到在一個add沒有執(zhí)行完前,即使再次發(fā)送執(zhí)行add的任務,celery worker也會等到前一個任務執(zhí)行完才去執(zhí)行下一個
與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中調(diào)用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)
執(zhí)行過程中,程序的print信息會作為celery warning,報錯信息會作為celery error
日志
在啟動應用的時候指定日志文件路徑
-f log_path
不設置這個參數(shù)的時候,日志默認輸出到控制臺
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Django+Celery實現(xiàn)動態(tài)配置定時任務的方法示例
- 如何使用Celery和Docker處理Django中的定期任務
- Django實現(xiàn)celery定時任務過程解析
- 使用celery和Django處理異步任務的流程分析
- Django集成celery發(fā)送異步郵件實例
- django 實現(xiàn)celery動態(tài)設置周期任務執(zhí)行時間
- django之使用celery-把耗時程序放到celery里面執(zhí)行的方法
- Django中celery執(zhí)行任務結果的保存方法
- Django-celery-beat動態(tài)添加周期性任務實現(xiàn)過程解析
相關文章
使用pandas中的DataFrame數(shù)據(jù)繪制柱狀圖的方法
下面小編就為大家分享一篇使用pandas中的DataFrame數(shù)據(jù)繪制柱狀圖的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
使用python-Jenkins批量創(chuàng)建及修改jobs操作
這篇文章主要介紹了使用python-Jenkins批量創(chuàng)建及修改jobs操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Python爬蟲實現(xiàn)抓取電影網(wǎng)站信息并入庫
本文主要介紹了利用Python爬蟲實現(xiàn)抓取電影網(wǎng)站信息的功能,并將抓取到的信息入庫。文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下2022-02-02
最新tensorflow與pytorch環(huán)境搭建的實現(xiàn)步驟
深度學習相關的熱門框架主要為Tensorflow和Pytorch,本文主要介紹了搭建最新tensorflow與pytorch環(huán)境,具有一定的參考價值,感興趣的可以了解一下2024-04-04
Python requests模塊基礎使用方法實例及高級應用(自動登陸,抓取網(wǎng)頁源碼)實例詳解
這篇文章主要介紹了Python requests模塊基礎使用方法實例及高級應用(自動登陸,抓取網(wǎng)頁源碼,Cookies)實例詳解,需要的朋友可以參考下2020-02-02
總結分析python數(shù)據(jù)化運營關聯(lián)規(guī)則
本文內(nèi)容主要介紹了python數(shù)據(jù)化運營中關聯(lián)規(guī)則的一般應用場景,以及關聯(lián)規(guī)則的實現(xiàn),并例舉了適應的應用示例,方便大家更直觀的理解應用2021-08-08
python實現(xiàn)自動網(wǎng)頁截圖并裁剪圖片
這篇文章主要為大家詳細介紹了python實現(xiàn)自動網(wǎng)頁截圖并裁剪圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07
解決json.decoder.JSONDecodeError: Expecting value:&n
這篇文章主要介紹了解決json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)錯誤,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04

