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

Superset Worker重启且Celery忽略配置值问题求助(K8s/SQS/S3)

Superset + Celery SQS 部署问题解决方案

问题1:存活探针执行失败导致Worker不断重启

核心原因

celery inspect ping 命令依赖Celery的远程控制功能,但你已经禁用了该功能;同时SQS作为云原生Broker,本身不支持Celery原生的节点发现机制,导致探针无法获取Worker响应。

解决方案

  1. 替换存活探针命令
    放弃依赖远程控制的inspect ping,改用更可靠的进程检查方式:
    在Helm values.yaml中修改Worker的存活探针配置:

    worker:
      livenessProbe:
        command:
          - sh
          - -c
          - "ps aux | grep 'celery worker' | grep -v grep"
        initialDelaySeconds: 30
        periodSeconds: 10
        failureThreshold: 3
    

    或者检查Celery的pid文件(如果Worker启动时生成pid文件的话):

    command:
      - sh
      - -c
      - "cat /tmp/celery.pid && kill -0 $(cat /tmp/celery.pid)"
    
  2. 延长探针超时与启动延迟
    如果暂时不想换探针命令,可以先调整参数给Worker足够的启动时间:

    livenessProbe:
      command:
        - celery
        - -A
        - superset.tasks.celery_app:app
        - inspect
        - ping
        - -d
        - celery@$HOSTNAME
        - --timeout
        - "15"
      initialDelaySeconds: 60
      periodSeconds: 20
    

问题2:禁用远程控制后仍创建大量pid队列

核心原因

Celery 5.x与SQS Broker的兼容性问题,或者配置未正确传递到Superset的Celery应用实例。

解决方案

  1. 确保配置正确加载
    不要只在Helm values中设置worker_enable_remote_control和CELERY_ENABLE_REMOTE_CONTROL,需要将配置注入到Superset的superset_config.py中:
    在Helm values中添加额外配置:

    extraEnv:
      - name: SUPERSET_CELERY_ENABLE_REMOTE_CONTROL
        value: "False"
      - name: SUPERSET_WORKER_ENABLE_REMOTE_CONTROL
        value: "False"
    

    或者通过extraConfigMap挂载自定义配置文件:

    extraConfigMaps:
      superset-custom-config:
        mountPath: /app/pythonpath/superset_config.py
        subPath: superset_config.py
        data:
          superset_config.py: |
            CELERY_ENABLE_REMOTE_CONTROL = False
            worker_enable_remote_control = False
    
  2. 调整Celery SQS传输配置
    添加Broker传输选项,限制队列创建行为:
    在superset_config.py中补充:

    CELERY_BROKER_TRANSPORT_OPTIONS = {
        'queue_name_prefix': 'superset-',
        'visibility_timeout': 3600,
        'region': 'your-aws-region',
        'disable_rate_limits': True
    }
    
  3. 升级/降级Celery版本
    celery[sqs] 5.2.7存在已知的SQS队列创建bug,建议升级到5.2.8及以上版本,或者降级到5.2.6,修复该问题。

  4. 清理冗余队列
    通过AWS CLI批量清理已创建的pid队列:

    aws sqs list-queues --queue-name-prefix "celery-pidbox-" | jq -r '.QueueUrls[]' | xargs -I {} aws sqs delete-queue --queue-url {}
    

内容的提问来源于stack exchange,提问作者D. Gal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:45:48