使用django 定时任务 (Django + celery + beat )

安装 django + celery + results

 

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

 

安装 django-celery-beat

1
pip install django-celery-beat

 

配置 settings.py

1
2
3
4
5
INSTALLED_APPS = [
    # ...
    'django_celery_results'# 查看 celery 执行结果
    'django_celery_beat'# pip install django-celery-beat
]

生成 Django-celery-beat 关联表

1
python manage.py migrate

 

app 目录 tasks.py 添加 task

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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

 

1
2
3
4
5
6
7
# 项目根目录终端执行(joyoo 项目名称)
 
celery -A joyoo worker -l info
 
# 守护进程
 
/root/.virtualenvs/blog/bin/celery multi start w1 -A joyoo -l info --logfile=./celerylog.log

 

posted @   兰嘉轩  阅读(1326)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示