Tôi muốn đặt các tệp video lớn từ AWS S3 vào 's stdin
, từ quan điểm của Python là một' đối tượng giống như tệp '. Mã này chạy dưới dạng hàm AWS Lambda, vì vậy các tệp này sẽ không vừa trong bộ nhớ hoặc trên hệ thống tệp cục bộ. Ngoài ra, tôi không muốn sao chép các tệp khổng lồ này ở bất kỳ đâu, tôi chỉ muốn truyền luồng dữ liệu đầu vào, quá trình khi đang di chuyển và phát trực tiếp đầu ra. Tôi đã có các bit xử lý và đầu ra luồng hoạt động. Vấn đề là làm thế nào để có được một dòng đầu vào như là một Popen pipe
.Làm thế nào để sử dụng botocore.response.StreamingBody như stdin PIPE
Cập nhật: Tôi đặt cùng một số short program gọi StreamingBody.read (amt = chunk_size) dựa trên nhận xét. Chương trình đọc một số tập tin đầu vào (một video mp4) và bị kẹt, có thể bởi vì người tiêu dùng dữ liệu (ffmpeg) không thực sự chạy, hoặc có thể đệm STDIN của nó và toàn bộ đống lộn xộn sẽ dừng lại?
tôi có thể truy cập vào một tập tin trong một xô S3:
import boto3
s3 = boto3.resource('s3')
response = s3.Object(bucket_name=bucket, key=key).get()
body = response['Body']
body
là một botocore.response.StreamingBody
mà trông như thế này:
{ u'Body': <botocore.response.StreamingBody object at 0x00000000042EDAC8>, u'AcceptRanges': 'bytes', u'ContentType': 'video/mp4', 'ResponseMetadata': { 'HTTPStatusCode': 200, 'HostId': 'aAUs3IdkXP6vPGwauv6/USEBUWfxxVeueNnQVAm4odTkPABKUx1EbZO/iLcrBWb+ZiyqmQln4XU=', 'RequestId': '6B306488F6DFEEE9' }, u'LastModified': datetime.datetime(2015, 3, 1, 1, 32, 58, tzinfo=tzutc()), u'ContentLength': 393476644, u'ETag': '"71079d637e9f14a152170efdf73df679"', u'Metadata': {'cb-modifiedtime': 'Sun, 01 Mar 2015 01:27:52 GMT'}}
Tôi có ý định sử dụng body
một cái gì đó như thế này:
from subprocess import Popen, PIPE
Popen(cmd, stdin=PIPE, stdout=PIPE).communicate(input=body)[0]
Nhưng tất nhiên body
cần phải được chuyển đổi thành một đối tượng giống như tệp. Câu hỏi là thế nào?
Xem phản hồi của tôi trong [thread] có liên quan này (https://stackoverflow.com/questions/7624900/how-can-i-use-boto-to-stream-a-file-out-of-amazon-s3 -to-rackspace-cloudfiles /). – smallo
Xem câu trả lời của tôi cho [thread] liên quan này (https://stackoverflow.com/questions/7624900/how-can-i-use-boto-to-stream-a-file-out-of-amazon-s3-to -rackspace-cloudfiles /). – smallo