Django - 创建时间 每24小时后-24

可以使用Django的datetime.timedelta来实现每24小时减去1小时的功能。

首先,你需要安装django-celery,它是一个用于处理定时任务的扩展库。你可以使用以下命令安装它:

pip install django-celery

接下来,在你的Django项目的settings.py文件中,添加以下配置:

# settings.py

# 添加以下配置
CELERY_BROKER_URL = 'redis://localhost:6379/0'  # Redis作为消息中间件
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'  # Redis作为结果存储

CELERY_BEAT_SCHEDULE = {
    'subtract_hourly': {
        'task': 'yourapp.tasks.subtract_hourly',
        'schedule': timedelta(hours=24),  # 每24小时执行一次
    },
}

然后,在你的Django项目的根目录下创建一个名为tasks.py的文件,并添加以下内容:

# tasks.py

from datetime import timedelta
from celery.task import periodic_task
from yourapp.models import YourModel

@periodic_task(run_every=timedelta(hours=24))
def subtract_hourly():
    YourModel.objects.all().update(your_field=YourModel.your_field - timedelta(hours=24))

最后,运行以下命令启动Celery worker和beat:

celery -A yourproject worker --loglevel=info
celery -A yourproject beat --loglevel=info

这样,每24小时,subtract_hourly任务将会执行一次,更新YourModel中的数据,将your_field字段减去24小时。

 

posted @ 2023-09-11 21:52  jakub  阅读(30)  评论(0)    收藏  举报