zoukankan      html  css  js  c++  java
  • python2--djnago xadmin 定时任务,手把手

    settings.py

    INSTALLED_APPS = (
        'djcelery',
    
    )
    
    
    import djcelery
    
    djcelery.setup_loader()
    BROKER_URL = 'redis://localhost:6379'
    CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
    CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
    CELERY_ACCEPT_CONTENT = ['application/json']
    CELERY_TASK_SERIALIZER = 'json'
    CELERY_RESULT_SERIALIZER = 'json'
    CELERY_TIMEZONE = 'Asia/Shanghai'
    CELERY_LOG_FILE = os.path.join(os.path.join(os.path.join(BASE_DIR, 'logs'), 'celery'), 'celery.log')
    CELERYBEAT_LOG_FILE = os.path.join(os.path.join(os.path.join(BASE_DIR, 'logs'), 'celery'), 'beat.log')
    CELERY_TASK_RESULT_EXPIRES = 10

    项目同名目录下的__init__.py

    # -*- coding:utf-8 -*-
    from __future__ import absolute_import,unicode_literals
    
    from .celery import app as celery_app
    
    __all__ = ['celery_app']
    
    import pymysql
    pymysql.install_as_MySQLdb()

    项目同名目录下新建celery.py

    # -*- coding:utf-8 -*-
    
    from __future__ import absolute_import,unicode_literals
    
    import os
    from celery import Celery, platforms
    from django.conf import settings
    
    # set the default Django settings module for the 'celery' program.
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'WebSite.settings')
    
    # WebSite主应用名
    app = Celery('WebSite')
    platforms.C_FORCE_ROOT = True
    
    app.config_from_object('django.conf:settings')
    app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
    
    @app.task(bind=True)
    def debug_task(self):
        print('Request: {0!r}'.format(self.request))
    
    app.conf.timezone = 'UTC'
    
    # from datetime import timedelta
    # app.conf.update(
    #     CELERYBEAT_SCHEDULE = {
    #         'task_add': {
    #             'task': 'apps.tasks.start_running',
    #             'schedule': timedelta(seconds=10)
    #         },
    #     },
    # )

    执行定时任务的app下的adminx.py

    # -*- coding:utf-8 -*-
    from __future__ import absolute_import, unicode_literals
    from djcelery.models import (
      TaskState, WorkerState,
      PeriodicTask, IntervalSchedule, CrontabSchedule,
    )
    import xadmin
    
    xadmin.site.register(IntervalSchedule) # 存储循环任务设置的时间
    xadmin.site.register(CrontabSchedule) # 存储定时任务设置的时间
    xadmin.site.register(PeriodicTask) # 存储任务
    xadmin.site.register(TaskState) # 存储任务执行状态
    xadmin.site.register(WorkerState) # 存储执行任务的worker

    执行定时任务的app下新建tasks.py

    # -*- coding:utf-8 -*-
    from __future__ import absolute_import
    from WebSite.celery import app
    from celery import task, shared_task
    
    
    @app.task
    def start_running(info):
        print(info)
        print('--->>开始执行任务<<---')
        print('比如发送短信或邮件')
        print('>---任务结束---<')
    @shared_task
    def mul(x, y):
        print('乘法',x*y)
        return x * y
    版本要求,一定安要求来,否则莫名其妙的各种问题百度都查不到
    pip2 install celery==3.1.23
    pip2 install django==1.9
    pip2 install django-celery==3.1.17
    pip2 install flower==0.9.2
    pip2 install redis==2.10.6
  • 相关阅读:
    8.11 hdu 多校第五场补题
    8.10 trie树模板
    8.6 edu25 ,577#div2 CF补题(二分 ,dp 与 贪心
    8.4 POJ 3237 (树链剖分+线段树
    8.4 poj 2763 Housewife Wind (树链剖分边权处理
    8.4 树链剖分
    8.3 树链剖分
    2019 hdu 第四场补题 (2
    2019 hdu 第四场补题 (1 ,签到题
    51NOD 1137 矩阵乘法
  • 原文地址:https://www.cnblogs.com/lutt/p/13579898.html
Copyright © 2011-2022 走看看