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

如何配置Django+Celery+Redis实现远程服务器执行Celery任务

跨机器部署Django+Celery+Redis实现GPU加速任务处理

一、方案可行性

完全可行。Celery本身为分布式任务队列设计,只要三台机器共享同一个Redis消息中间件,就能将trout/tsunami发起的任务定向到t-rex的Celery Worker执行,执行完成后结果可返回至发起节点。

二、详细配置步骤

1. 配置共享Redis消息中间件

  • 在t-rex上修改Redis配置文件(通常为/etc/redis/redis.conf):
    • 将bind 127.0.0.1改为bind 0.0.0.0,允许远程机器连接
    • 将protected-mode yes改为protected-mode no(生产环境建议配合密码认证,添加requirepass your_strong_password)
    • 重启Redis服务:sudo systemctl restart redis-server
    • 开放防火墙端口:sudo ufw allow 6379/tcp
  • 在三台机器的Django项目settings.py中配置Celery的broker和result backend指向t-rex的Redis:
    CELERY_BROKER_URL = 'redis://t-rex-ip:6379/0'  # 若设置密码,格式为redis://:password@t-rex-ip:6379/0
    CELERY_RESULT_BACKEND = 'redis://t-rex-ip:6379/0'
    

2. 启动t-rex的Celery Worker

  • 确保t-rex上的代码库与trout/tsunami完全一致,且已安装带CUDA支持的dlib
  • 启动Worker时指定专属队列(比如cuda_tasks),确保任务只由GPU节点处理:
    celery -A your_django_project worker -Q cuda_tasks --loglevel=info --concurrency=4  # concurrency根据GPU核心数调整
    

3. 在trout/tsunami提交任务到GPU队列

  • 提交任务时指定队列,将任务定向到t-rex的Worker:
    # 假设任务函数定义在tasks.py中
    from .tasks import image_processing_task
    
    # 提交任务到cuda_tasks队列
    task_result = image_processing_task.apply_async(args=[image_path, params], queue='cuda_tasks')
    
    # 获取结果(同步等待或异步查询)
    result = task_result.get(timeout=3600)  # 根据任务耗时调整超时时间
    

4. 处理结果返回

  • 文件结果:
    • 方案1:在t-rex的任务函数中,将处理后的文件上传到三台机器都能访问的共享存储(如NFS、SMB),返回文件路径给发起节点后由其读取
    • 方案2:将小文件内容序列化后通过Celery结果后端返回
  • 数据库写入:
    • 建议在任务函数中通过远程连接写入发起节点的MySQL数据库(需配置数据库允许t-rex访问),或返回处理后的数据由发起节点写入本地数据库,避免跨机器权限风险

三、dlib的CUDA支持问题

不会阻碍计划。原因如下:

  • 只有执行任务的t-rex需要带CUDA编译的dlib,trout/tsunami上的dlib仅用于提交任务,不会执行任何依赖CUDA的计算逻辑
  • 注意:确保任务函数中的所有GPU加速代码都在Celery任务内部执行,不要在trout/tsunami的Django进程中调用依赖CUDA的dlib方法

四、额外注意事项

  • 网络连通性:确保三台机器之间能访问Redis端口(6379),以及共享存储/数据库端口
  • 依赖一致性:除dlib的CUDA差异外,其他Python依赖包版本需完全一致,避免任务序列化/反序列化错误
  • 超时配置:在settings.py中调整Celery超时参数,适配GPU任务耗时:
    CELERY_TASK_TIME_LIMIT = 7200  # 任务最大执行时间,单位秒
    CELERY_TASK_SOFT_TIME_LIMIT = 7000
    
  • 任务监控:可通过celery -A your_django_project flower启动监控工具,实时查看任务状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:42:53