मैं Popen
के stdin
है, जो दृश्य एक के अजगर के दृष्टिकोण से है 'फ़ाइल जैसी वस्तु' में एडब्ल्यूएस S3 से पाइप बड़ी वीडियो फ़ाइलों को करना चाहते हैं। यह कोड AWS Lambda फ़ंक्शन के रूप में चलता है, इसलिए ये फ़ाइलें स्मृति या स्थानीय फ़ाइल सिस्टम पर फिट नहीं होंगी। साथ ही, मैं इन विशाल फ़ाइलों को कहीं भी कॉपी नहीं करना चाहता, मैं केवल इनपुट स्ट्रीम करना चाहता हूं, फ्लाई पर प्रक्रिया करना चाहता हूं, और आउटपुट स्ट्रीम करना चाहता हूं। मुझे पहले ही प्रोसेसिंग और स्ट्रीमिंग आउटपुट बिट्स मिल रही हैं। समस्या यह है कि एक इनपुट स्ट्रीम को Popen pipe
के रूप में कैसे प्राप्त करें।stdin पाइप के रूप में botocore.response.StreamingBody का उपयोग कैसे करें
अपडेट: मैंने एक short program एक साथ रखा जो एक टिप्पणी के आधार पर StreamingBody.read (amt = chunk_size) को आमंत्रित करता है। कार्यक्रम कुछ इनपुट फ़ाइल (एक एमपी 4 वीडियो) पढ़ता है और संभवतः क्योंकि डेटा का उपभोक्ता (ffmpeg) वास्तव में नहीं चलता है, या शायद इसका एसटीडीआईएन बफर भरता है और पूरी गड़बड़ी बंद हो जाती है?
मैं एक S3 बाल्टी में एक फ़ाइल का उपयोग कर सकते हैं:
{ 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'}}
मैं इस तरह body
कुछ उपयोग करने का इरादा:
import boto3
s3 = boto3.resource('s3')
response = s3.Object(bucket_name=bucket, key=key).get()
body = response['Body']
body
एक botocore.response.StreamingBody
जो इस तरह दिखता है
from subprocess import Popen, PIPE
Popen(cmd, stdin=PIPE, stdout=PIPE).communicate(input=body)[0]
लेकिन निश्चित रूप से body
को फ़ाइल की तरह ऑब्जेक्ट में परिवर्तित करने की आवश्यकता है। सवाल यह है कि कैसे?
इस संबंधित [थ्रेड] में मेरी प्रतिक्रिया देखें (https://stackoverflow.com/questions/7624900/how-can-i-use-boto-to-stream-a-file-out-of-amazon-s3 करने वाली रैकस्पेस-cloudfiles /)। – smallo
इस संबंधित [थ्रेड] (https://stackoverflow.com/questions/7624900/how-can-i-use-boto-to-stream-a-file-out-of-amazon-s3-to पर मेरी प्रतिक्रिया देखें -rackspace-cloudfiles /)। – smallo