You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为DigitalOcean部署的Django应用配置Redis与Celery Worker

在DigitalOcean上配置Django + Celery + Redis的具体步骤

1. 安装并配置Redis服务

  • 更新系统包:sudo apt update && sudo apt upgrade -y
  • 安装Redis:sudo apt install redis-server -y
  • 编辑Redis配置文件(默认绑定本地,无需远程连接的话保持默认即可):sudo nano /etc/redis/redis.conf,找到bind 127.0.0.1 ::1这一行,确保未被注释
  • 设置Redis开机自启:sudo systemctl enable redis-server
  • 启动Redis:sudo systemctl start redis-server
  • 验证运行状态:执行redis-cli ping,返回PONG说明Redis正常运行

2. 配置Django项目中的Celery

  • 激活项目虚拟环境,安装依赖:pip install celery redis
  • 在Django项目根目录(和settings.py同级)创建celery.py文件,内容如下:
import os
from celery import Celery

# 替换成你的项目名称
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')

app = Celery('your_project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
  • 编辑项目根目录的__init__.py,添加以下代码让Django识别Celery:
from .celery import app as celery_app

__all__ = ('celery_app',)
  • 打开settings.py,添加Celery核心配置:
# Celery配置
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/0'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

3. 测试Celery Worker与Redis的连接

  • 在虚拟环境中,进入项目根目录,启动Celery Worker:celery -A your_project worker --loglevel=info
  • 观察输出日志,如果看到Connected to redis://127.0.0.1:6379/0,说明连接成功
  • 可创建测试任务验证:在任意Django app下新建tasks.py,写入:
from celery import shared_task

@shared_task
def test_celery_connection():
    return "Celery与Redis连接正常!"
  • 进入Django shell执行任务:python manage.py shell,然后输入from your_app.tasks import test_celery_connection; test_celery_connection.delay(),查看Worker日志是否有任务执行记录

4. 将Celery Worker配置为系统服务(后台持久运行)

  • 创建Celery服务文件:sudo nano /etc/systemd/system/celery.service
  • 写入以下内容(替换成你的实际路径和用户名):
[Unit]
Description=Celery Worker Service
After=network.target

[Service]
User=your_username
Group=your_username
WorkingDirectory=/path/to/your/django/project
Environment="PATH=/path/to/your/virtualenv/bin"
# --concurrency可根据服务器CPU核心数调整
ExecStart=/path/to/your/virtualenv/bin/celery -A your_project worker --loglevel=info --concurrency=4

[Install]
WantedBy=multi-user.target
  • 重新加载系统服务:sudo systemctl daemon-reload
  • 启动Celery服务:sudo systemctl start celery
  • 设置开机自启:sudo systemctl enable celery
  • 验证服务状态:sudo systemctl status celery

5. 配置Celery Beat(定时任务)

  • 如果需要定时任务,先安装依赖:pip install django-celery-beat,并在settings.py的INSTALLED_APPS中添加django_celery_beat,执行迁移:python manage.py migrate
  • 在settings.py中添加定时任务配置(示例):
from celery.schedules import crontab

CELERY_BEAT_SCHEDULE = {
    # 每天8点执行发送邮件任务
    'daily-email-task': {
        'task': 'your_app.tasks.send_daily_email',
        'schedule': crontab(hour=8, minute=0),
    },
}
  • 创建Celery Beat服务文件:sudo nano /etc/systemd/system/celery-beat.service
  • 写入内容:
[Unit]
Description=Celery Beat Service
After=network.target

[Service]
User=your_username
Group=your_username
WorkingDirectory=/path/to/your/django/project
Environment="PATH=/path/to/your/virtualenv/bin"
ExecStart=/path/to/your/virtualenv/bin/celery -A your_project beat --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler

[Install]
WantedBy=multi-user.target
  • 重新加载服务并启动:
sudo systemctl daemon-reload
sudo systemctl start celery-beat
sudo systemctl enable celery-beat

内容的提问来源于stack exchange,提问作者Ritankar Bhattacharjee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:46:07