Django中使用Celery worker

2024-05-18 19:30:07 浏览数 (3)

使用 Upstash Redis、Celery 和 Django 实现定时任务,您可以按照以下步骤进行:

1. 设置 Upstash Redis

  • 首先,您需要注册一个 Upstash 帐户并创建一个 Redis 数据库。
  • 获取您的 Redis 连接 URL,包括密码和端口号。

2. 配置 Django 项目

  • 在您的 Django settings.py 文件中,添加 Celery 设置:
代码语言:python代码运行次数:0复制
CELERY_BROKER_URL = 'rediss://:<password>@<hostname>:<port>'
CELERY_RESULT_BACKEND = 'rediss://:<password>@<hostname>:<port>'
  • <password><hostname><port> 替换为您的 Upstash Redis 连接信息。

3. 创建 Celery 任务

  • 在您的 Django 应用程序中创建一个 tasks.py 文件。
  • 定义您的 Celery 任务,例如:
代码语言:python代码运行次数:0复制
from celery import shared_task

@shared_task
def my_scheduled_task():
    # 定时任务的逻辑代码
    print("定时任务正在运行!")

4. 使用 Celery Beat 进行调度

  • Celery Beat 是一个调度器,用于定期运行任务。您可以使用 celery beat 命令启动它。
  • 使用 CELERY_BEAT_SCHEDULE 在您的 settings.py 文件中配置调度:
代码语言:python代码运行次数:0复制
CELERY_BEAT_SCHEDULE = {
    'my_scheduled_task': {
        'task': 'myapp.tasks.my_scheduled_task',
        'schedule': crontab(minute='*/5'),  # 每 5 分钟运行一次
    },
}
  • 您可以使用 crontab 函数定义不同的调度时间表。

5. 运行 Celery worker

  • 使用命令启动 Celery worker。worker: celery worker -A myproject --loglevel=INFO
  • Celery worker 将连接到 Upstash Redis 并执行调度任务。

总结

通过以上步骤,您可以使用 Upstash Redis、Celery 和 Django 实现定时任务功能。 Upstash Redis 提供了快速可靠的存储, Celery 负责任务调度和执行,而 Django 作为您的 Web 框架。

注意:

  • 确保您的 Django 应用程序已正确安装 Celery。
  • 您需要根据您的需求调整 Celery Beat 的调度时间表。
  • 您可以使用 Celery 的其他功能,例如任务重试和错误处理。

1 人点赞