django celery實現非同步訊息佇列

2021-08-20 01:19:57 字數 2211 閱讀 2667

步驟:

1. 建立專案

django-admin startproject project

3. 配置settings.py

debug = false

allowed_hosts = ['127.0.0.1']

# celery

djcelery.setup_loader()

broker_url = 'redis:'

celerybeat_scheduler = 'djcelery.schedulers.databasescheduler'

celery_accept_content = ['json']

celery_result_backend = 'redis://localhost:6379/2'

celery_task_serializer = 'json'

celery_enable_utc = true

time_zone = 'asia/shanghai'

celery_timezone = time_zone

# email

email_backend = 'django.core.mail.backends.smtp.emailbackend'

email_host = ""

email_host_password = ''

default_from_email = email_host_user = ""

email_port = 25

email_use_tls = true

4. tasks.py**

#coding=utf-8

from __future__ import absolute_import, unicode_literals

from celery import shared_task

from django.core.mail import send_mail

import logging

logger = logging.getlogger(__name__)

@shared_task

def celery_send_email(subject, message, from_email, recipient_list, **kwrags):

try:

logger.info("\n開始傳送郵件")

send_mail(subject, message, from_email, recipient_list, **kwrags)

logger.info("郵件傳送成功")

return 'success!'

except exception as e:

logger.error("郵件傳送失敗: {}".format(e))

5.初始化資料庫

python manage.py makemigrations

python manage.py migrate

6. 配置我們的celery-beat

django提供了乙個視覺化的後台,

啟動服務

python manage.py runserver

。瀏覽器訪問 :120.0.0.1:8000/admin

這時候我們發現我們還沒有管理員帳號?

命令視窗通過python manage.py createsuperuser 建立管理員帳號

7. 後台 periodic task 中增加定時任務

這裡配置定時任務可以做到最小單位 microsecond 微妙

interval 間隔

crontab 最小單位是minute分鐘

分 時 日 月 星期

8. 啟動心跳

python manage.py celery beat

9. 啟動 worker

python manage.py celery worker -l info 

10. 啟動 celery flower ,對任務進行監控

pip install celery-flower

python manage.py

celery flower

127.0.0.1:5555

每次執行非同步task後, celery都會返回asyncresult物件作為結果. 你可以將其儲存, 然後在將來檢視該task是否執行成功和返回結果:

django celery 任務訊息佇列

描述 為提高 效能,很多耗時,但不影響頁面正常的操作,可丟給訊息佇列非同步執行 比如sns 的 新鮮事兒 系統,我發帖之後,會給所有關注我的人推送一條通知。乍一看沒什麼難的,發帖之後找出關注我的人,然後生成相應的訊息記錄就行了。但問題是,100個人關注我,就要執行100條insert查詢,更要命的是...

Django Celery定時任務

celery是由python開發的乙個簡單 靈活 可靠的處理大量任務的分發系統,它不僅支援實時處理也支援任務排程。pip3 install django celery beat pip3 install redis 寫入配置 celery broker url redis 密碼 127.0.0.1 ...

Django Celery使用及介紹

1.1 celery應 舉例 1.2 celery有以下優點 1.3 celery 特性 2.1 celery 扮演 產者和消費者的角色 2.2 產生任務的方式 2.3 celery 依賴三個庫 這三個庫,都由 celery 的開發者開發和維護.推薦版本 django 2.2.6 django ce...