关于Django使用 django-celery-beat动态添加定时任务的方法

  • 作者:牛肉盖饭
  • 分类: Django
  • 发表日期:2022-11-30 12:16:33
  • 阅读(865)
  • 评论数(0)

安装依赖:
    pip install redis

   pip install django-celery-beat

配置setting.py

# django时区配置

TIME_ZONE = 'Asia/Shanghai'

# 如果USE_TZ设置为True时,Django会使用系统默认设置的时区,此时的TIME_ZONE不管有没有设置都不起作用

# 如果USE_TZ 设置为False,TIME_ZONE = 'Asia/Shanghai', 则使用上海的UTC时间。

USE_TZ = False

 

INSTALLED_APPS = (

    ...,

    'django_celery_beat',

)

 

# celery beat配置

# CELERY_ENABLE_UTC = False

CELERY_TIMEZONE = TIME_ZONE

DJANGO_CELERY_BEAT_TZ_AWARE = False

CELERY_BEAT_SCHEDULER = 'django-celery-beat.schedulers.DatabaseScheduler'

# celery 的启动工作数量设置

CELERY_WORKER_CONCURRENCY = 10

# 任务预取功能,会尽量多拿 n 个,以保证获取的通讯成本可以压缩。

CELERYD_PREFETCH_MULTIPLIER = 20

# 有些情况下可以防止死锁

CELERYD_FORCE_EXECV = True

# celery 的 worker 执行多少个任务后进行重启操作

CELERY_WORKER_MAX_TASKS_PER_CHILD = 100

# 禁用所有速度限制,如果网络资源有限,不建议开足马力。

CELERY_DISABLE_RATE_LIMITS = True

# 设置代理人broker

CELERY_BROKER_URL = 'redis://127.0.0.1:6379/2'

# 指定 Backend

CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/1'

生成数据库:

    python manage.py migrate

setting.py同级目录下生成celery.py文件

import os

from celery import Celery, platforms

from celery.schedules import crontab

from django.conf import settings

 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_server.settings")

app = Celery("django_server")

app.config_from_object("django.conf:settings", namespace="CELERY")

# 定时任务的存放位置

app.autodiscover_tasks(["demoapp.tasks",])

同级目录__init__.py文件 :

from .celery import app as celery_app

__all__ = ('celery_app',)

 

提交评论

您尚未登录,登陆之后方可评论 登录 or 注册

评论列表

暂无评论