花不能在ECR AWS上ping芹菜工人

2024-09-28 21:30:00 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我最近面临的问题:

我有一些python脚本可以进行数据分析

代码部署在芹菜工人中,该工人使用beat和Redis作为代理。我还使用Flower来监控任务

我使用的Redis实例是来自AWS的Redis

3个服务使用推送到AWS上ECR的docker映像

我遇到的问题是,当我试图从flower实例ping worker实例时,它没有到达worker。我如何让花与工人沟通

当我在本地机器上以docker容器的形式运行时,一切都正常工作

以下是如何在AWS的任务定义中定义我的容器:

{
    "requiresCompatibilities": [
        "FARGATE"
    ],
    "inferenceAccelerators": [],
    "containerDefinitions": [{
      "command": [
        "celery",
        "-A",
        "celery_factory:celery",
        "beat",
        "-S",
        "redbeat.RedBeatScheduler",
        "--loglevel=info"
      ],
      "essential": true,
      "image": "spiny-pi-cards-aws:00000",
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "spiny-pi-cards-logs",
          "awslogs-region": "us-east-2",
          "awslogs-stream-prefix": "celery-beat"
        }
      },
      "name": "celery-beat",
      "memory": 256
    },
        {
            "command": [
                "celery",
                "-A",
                "celery_factory:celery",
                "worker",
                "--loglevel=info",
                "-E"
            ],
            "essential": true,
            "image": "spiny-pi-cards-aws:00000",
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-group": "spiny-pi-cards-logs",
                    "awslogs-region": "us-east-2",
                    "awslogs-stream-prefix": "celery-worker"
                }
            },
            "name": "celery-worker",
            "memory": 256
        },
        {
            "command": [
                "./start_flower"
            ],
            "environment": [
                {
                    "name": "FLOWER_PORT",
                    "value": "5556"
                }
            ],
            "essential": true,
            "image": "spiny-pi-cards-aws:00000",
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-group": "spiny-pi-cards-logs",
                    "awslogs-region": "us-east-2",
                    "awslogs-stream-prefix": "celery-flower"
                }
            },
            "name": "flower",
            "memory": 256,
            "portMappings": [
                {
                    "containerPort": 5556,
                    "hostPort": 5556
                }
            ]
        }
    ],
    "volumes": [],
    "networkMode": "awsvpc",
    "memory": "1024",
    "cpu": "256",
    "executionRoleArn": "somesecret_stu",
    "family": "spiny_pi_cards-task-definition",
    "taskRoleArn": "",
    "placementConstraints": []
}

下面是我运行ping的方式: 这是我的./start_flower.sh的内容

until timeout 10s celery -A celery_factory:celery inspect -d celery@ip.us-east-2.compute.internal ping; do
    >&2 echo "Celery workers not available"
done

echo 'Starting flower'
celery -A celery_factory:celery flower --loglevel=info -E

当在花盆内运行时,它不会到达工人手中

它使返回的工人无法飞行


Tags: nameredisfactorypicelerycardsusworker