使用django 定時任務 (Django + celery + beat )


安裝 django + celery + results

 

https://www.cnblogs.com/lanheader/p/13615772.html

 

安裝 django-celery-beat

pip install django-celery-beat

 

配置 settings.py

INSTALLED_APPS = [
    # ...
    'django_celery_results',  # 查看 celery 執行結果
    'django_celery_beat',  # pip install django-celery-beat
]

生成 Django-celery-beat 關聯表

python manage.py migrate

 

app 目錄 tasks.py 添加 task

import json
import requests
import datetime
from celery import task
from django.core.cache import cache
from django.core.mail import send_mail
from django.utils import timezone
from .models import TodayViewPage

@task
def task_send_dd_text(url, msg, atMoblies, atAll="flase"):
    body = {
        "msgtype": "text",
        "text": {
            "content": msg
        },
        "at": {
            "atMobiles": atMoblies,
            "isAtAll": atAll
        }
    }
    headers = {'content-type': 'application/json',
               'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
    r = requests.post(url, headers=headers, data=json.dumps(body))
    return r.text




@task
def task_save_view_page():
    today = datetime.date.today()
    today_page_view = cache.get("today_page_view_%s" % (today.day - 1))
    if today_page_view:
        yesterday = datetime.date.today() + datetime.timedelta(days=-1)
        page_view_query = TodayViewPage.objects.filter(today=yesterday)
        if page_view_query.exists():
            page_view_obj = page_view_query.first()
            page_view_obj.view_page = today_page_view
            page_view_obj.save()
        else:
            page_view_obj = TodayViewPage(
                today=yesterday,
                view_page=today_page_view
            )
            page_view_obj.save()

        return "view page save success"

    return "view page save failed"

 

 

管理后台配置任務

 

啟動 celery worker

 

# 項目根目錄終端執行(joyoo 項目名稱)

celery -A joyoo worker -l info

# 守護進程

/root/.virtualenvs/blog/bin/celery multi start w1 -A joyoo -l info --logfile=./celerylog.log

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM