第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何查看正在運行的 Fargate ECS 任務的 Python 打印語句?

如何查看正在運行的 Fargate ECS 任務的 Python 打印語句?

ibeautiful 2023-09-26 14:20:13
我有一個 Fargate ECS 容器,用于通過 ECS 中的任務運行 Docker 容器。當任務啟動時,會調(diào)用一個sh腳本runner.sh,,#!/bin/shecho "this line will get logged to ECS..."python3 src/my_python_script.py # however print statements from this Python script are not logged to ECS這又會啟動一個長時間運行的 Python 腳本my_python_script.py. 我知道 Python 腳本運行良好,因為它執(zhí)行了需要執(zhí)行的操作,但我看不到 Python 腳本的輸出。里面my_python_script.py有好幾條print()語句。在我的 ECS Fargate 任務的 CloudWatch 日志中,我看到 sh 腳本 ( "this line will get logged to ECS...") 的輸出,但沒有看到print()Python 腳本中執(zhí)行的語句的輸出。這是我的任務定義中的日志配置:{    "ipcMode": null,    "executionRoleArn": "myecsTaskExecutionRolearn",    "containerDefinitions": [        {            "dnsSearchDomains": null,            "environmentFiles": null,            "logConfiguration": {                "logDriver": "awslogs",                "secretOptions": null,                "options": {                    "awslogs-group": "/ecs/mylogsgroup",                    "awslogs-region": "eu-west-1",                    "awslogs-stream-prefix": "ecs"                }            },            "entryPoint": null,            "portMappings": [],            "command": null,            "linuxParameters": null,            "cpu": 0,            "environment": [],            "resourceRequirements": null,            "ulimits": null,            "dnsServers": null,            "mountPoints": [],            "workingDirectory": null,            "secrets": null,            "dockerSecurityOptions": null,            "memory": null,            "memoryReservation": null,            "volumesFrom": [],            "stopTimeout": null,            "image": "1234567.dck.aws.com/mydockerimage",            "startTimeout": null,            "firelensConfiguration": null,        } 我想我正在遵循h(huán)ttps://docs.aws.amazon.com/AmazonECS/latest/userguide/using_awslogs.html中的 awslogs 說明,但也許不是?我是否需要做一些明顯的事情來確保print()在我的 ECS 任務的 CloudWatch 日志中捕獲 Python 腳本中的語句?
查看完整描述

1 回答

?
慕絲7291255

TA貢獻1859條經(jīng)驗 獲得超6個贊

在我看來,您可以在這里處理一些事情。

第一個是 Python 的默認緩沖行為,這可能會阻止輸出顯示。你需要阻止這個。

您可以通過在 CMD 之前插入以下內(nèi)容來正確設置PYTHONUNBUFFERED環(huán)境變量:

ENV PYTHONUNBUFFERED=1

其次,

任務中的容器記錄的信息類型主要取決于它們的 ENTRYPOINT 命令。默認情況下,捕獲的日志顯示您在本地運行容器時通常會在交互式終端中看到的命令輸出,即 STDOUT 和 STDERR I/O 流。awslogs 日志驅(qū)動程序只是將這些日志從 Docker 傳遞到 CloudWatch Logs。有關(guān)如何處理 Docker 日志的更多信息,包括捕獲不同文件數(shù)據(jù)或流的替代方法,請參閱 Docker 文檔中的查看容器或服務的日志。

因此,按照ENTRYPOINT 的 Exec 形式,我將用以下內(nèi)容替換 CMD 行:

ENTRYPOINT ["/app/runner.sh"]

這應該有助于將您的 shell 腳本的 STDOUT 和 STDERR I/O 流連接起來,并希望將您的 Python 腳本連接到容器日志記錄。


查看完整回答
反對 回復 2023-09-26
  • 1 回答
  • 0 關(guān)注
  • 106 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號