Django-Q 是一个轻量级的任务队列系统,用于在 Django 应用程序中执行后台任务。它支持多种调度方式,包括 cron 表达式。Cron 表达式是一种时间描述格式,用于指定任务的执行时间。
Django-Q 支持以下几种类型的任务:
假设我们有一个 Django 项目,需要在每天的凌晨 2 点执行一个任务,清理过期的缓存数据。我们可以使用 Django-Q 和 cron 表达式来实现这个需求。
首先,安装 Django-Q:
pip install django-q
然后在 settings.py
中配置 Django-Q:
INSTALLED_APPS = [
...
'django_q',
]
Q_CLUSTER = {
'name': 'Django-Q',
'workers': 1,
'timeout': 90,
'retry': 120,
'queue_limit': 50,
'bulk': 10,
'orm': 'default',
}
接下来,创建一个任务文件 tasks.py
:
from django_q.tasks import async_task
from datetime import datetime, timedelta
@async_task
def clean_expired_cache():
# 清理过期缓存的逻辑
print(f"Cleaning expired cache at {datetime.now()}")
# 配置 cron 表达式
cron_expression = "0 2 * * *" # 每天凌晨 2 点执行
最后,在 Django 项目的启动脚本中启动 Django-Q:
from django_q.management import qcluster
if __name__ == "__main__":
qcluster.start()
通过以上步骤和示例代码,你应该能够成功配置和使用 Django-Q 来执行单个作业的多 cron 表达式任务。
领取专属 10元无门槛券
手把手带您无忧上云