Celery django redis非同步執行任務

2021-07-25 21:40:36 字數 1742 閱讀 4254

特別注意:

如果你的專案是django框架,那麼django-celery,celery-with-redis等等這些東西,都不要用了(這些東西會受python、celery版本的影響,我一直沒測通…)。直接pip安裝celery 4版本以上,pip安裝redis就完全可以的

二進位制檔案是編譯完成後在src目錄下,通過下面的命令啟動redis服務:

$ src/redis-server

你可以使用內建的客戶端命令redis-cli進行使用:

$ src/redis-cli

redis> set foo bar

ok redis> get foo

「bar」

# wget 

# tar xzf redis-3.2.6.tar.gz

# cd redis-3.2.6

# make

# src/redis-server # 啟動redis服務,看清楚,這是在你的redis-3.2.6目錄下執行的

# src/redis-cli # 啟動客戶端

# pip install celery

# pip install redis

import time

from celery import task

@task()

defadd

(x, y):

return x + y

@task

defsendmail

(mail):

print

"++++++++++++++++++++++++++++++++++++"

print('sending mail to %s...' % mail['to'])

time.sleep(2.0)

print('mail sent.')

print

"------------------------------------"

return mail['to']

# celery -a tasks worker --loglevel=info

注意:每次更改tasks.py檔案中的**後,都要重新執行此命令!

>>> 

>>> sendmail.delay(dict(to='[email protected]'))

694b6fa8-a123-4c22-9ba2-b77d7cbb066f>

>>> add.delay(2, 15)

42d34419-4a34-49ab-9627-45428eaaeb38>

>>> a=add.delay(1,1)

>>> a.ready()

true

>>> a.get()

2>>> a=add.delay(10,5)

>>> a.get()

15

# views.py

deftask_workorder

(request, id):

"""任務新增"""

# ......你的**......

sendmail.delay(dict(to='[email protected]')) #申請人提交後會給審批人發郵件

# ......你的**......

SpringBoot執行有返回值的非同步任務

springboot如何使用多執行緒處理非同步任務,並且是代返回值的。比如,我乙個controller層的介面,呼叫到service層,在對應的service方法中有三個方法,這三個方法都是去調dao層查詢資料庫資料,每個查詢平均耗時5s,最後將這三個查詢的結果進行合併計算。如果不採用非同步查詢的至...

redis crontab php非同步處理任務

2016年1月8日 16 08 43 星期五 情景 使用者登入日誌,發郵件,發簡訊等等實時性要求不怎麼高的業務通常會非同步執行 之前接觸過幾種redis crontab配套的實現方法,比如 crontab定時執行curl指令碼 1.用curl 訪問url執行php指令碼去pop佇列 2.php程式p...

Silverlight實現呼叫多個非同步任務

public enum actionstatus 這個記錄了任務的結果 public class actionresult 任務名稱 public string taskname 狀態 public actionstatus status 訊息 public string message 任務結果 ...