在Django中使用Celery进行定时数据备份
在Django中使用Celery进行定时数据备份,需要进行以下步骤:
- 安装Celery库和Redis数据库(用于存储任务)
pip install celery redis
- 在settings.py中添加Celery的配置信息
#Celery配置信息 CELERY_BROKER_URL = 'redis://127.0.0.1:6379/0' CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0' #定时任务配置信息 CELERYBEAT_SCHEDULE = { 'backup-data-every-day':{ 'task':'myapp.tasks.backup', 'schedule':crontab(hour=0,minute=0), #每天凌晨执行 'args':(), #任务参数 } }
- 创建一个tasks.py文件,编写任务代码
from celery import shared_task import datetime import subprocess @shared_task def backup(): #数据库备份命令 cmd = 'mysqldump -u root -p密码 数据库名 > 备份文件路径'.format(datetime.datetime.now().strftime('%Y%m%d')) #执行备份命令 subprocess.call(cmd, shell=True)
- 在Django项目启动时启动Celery
from celery import Celery app = Celery('proj') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks() @app.task(bind=True) def debug_task(self): print('Request: {0!r}'.format(self.request)) @app.task(bind=True) def test(self): print('test celery')
- 启动Celery
在终端中执行以下命令启动Celery
celery -A myproject worker -l info celery -A myproject beat -l info
其中第一个命令用于启动Celery worker,第二个命令用于启动定时任务功能。
最后,只需要等待每天凌晨的备份任务自动执行即可。
相关文章