• 使用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
    

     

  • 相关阅读:
    Eclipse中项目去除Js验证
    Web安全扫描工具
    Oracle-定时任务
    About_Return
    About_php_封装函数
    About_PHP_函数
    About_PHP_验证码的生成
    About_PHP_文件的上传
    About_MySQL Select--来自copy_03
    About_AJAX_03
  • 原文地址:https://www.cnblogs.com/lanheader/p/13615815.html
Copyright © 2020-2023  润新知