5
5
import subprocess
6
6
import boto3
7
7
import re
8
-
9
8
import logging
10
- logging .basicConfig (level = logging .INFO )
11
- logger = logging .getLogger (__name__ )
9
+ import sys
10
+
11
+ # from https://gist.github.com/niranjv/fb95e716151642e8ca553b0e38dd152e
12
+ logger = logging .getLogger ()
13
+ for h in logger .handlers :
14
+ logger .removeHandler (h )
15
+ h = logging .StreamHandler (sys .stdout )
16
+ FORMAT = '[%(levelname)s] %(message)s'
17
+ h .setFormatter (logging .Formatter (FORMAT ))
18
+ logger .addHandler (h )
19
+ logger .setLevel (logging .INFO )
12
20
13
21
QUEUE_NAME = os .environ ['QUEUE_NAME' ]
14
22
S3_BUCKET_NAME = os .environ ['S3_BUCKET_NAME' ]
@@ -50,24 +58,24 @@ def handler(event, context):
50
58
51
59
52
60
def get_frame_range (render_request : dict ) -> Tuple [int , int ]:
61
+ if 'frame_start' in render_request and 'frame_end' in render_request :
62
+ return (int (render_request ['frame_start' ]), int (render_request ['frame_end' ]))
63
+
53
64
logger .info (f'Getting frame range from { LOCAL_RENDER_FILE } ' )
54
65
proc = subprocess .Popen (['blender' , '-b' , LOCAL_RENDER_FILE , '-P' , 'get_frames.py' ], stdout = subprocess .PIPE )
55
66
(out , err ) = proc .communicate ()
56
67
logger .debug (f'get_frames output: { out } ' )
57
68
logger .debug (f'get_frames error: { err } ' )
58
69
59
- matches = re .findall (r'\d+-\d+' , out .decode ('utf-8' ))
70
+ matches = re .findall (r'Frame range: ( \d+-\d+) ' , out .decode ('utf-8' ))
60
71
if len (matches ) == 0 :
61
- raise Exception ('No frame range found in file' )
72
+ raise Exception ('No frame range found in file, output found:' + out . decode ( 'utf-8' ) )
62
73
(file_frame_start , file_frame_end ) = matches [0 ].split ('-' )
63
74
64
75
if (not file_frame_start or not file_frame_end ):
65
76
raise Exception (f'Failed to get frame range from file.' )
66
77
67
- frame_start = render_request ['frame_start' ] if 'frame_start' in render_request else int (file_frame_start )
68
- frame_end = render_request ['frame_end' ] if 'frame_end' in render_request else int (file_frame_end )
69
-
70
- return frame_start , frame_end
78
+ return (int (file_frame_start ), int (file_frame_end ))
71
79
72
80
73
81
def queue_render_jobs (file_name , frame_start , frame_end , support_files ):
@@ -90,6 +98,7 @@ def check_s3_file_exists(file_name):
90
98
91
99
92
100
def retrieve_file_from_s3 (file_name ):
101
+ logger .info (f'Retrieving file { file_name } from S3 bucket { S3_BUCKET_NAME } to { LOCAL_RENDER_FILE } ' )
93
102
s3_bucket .download_file (file_name , LOCAL_RENDER_FILE )
94
103
95
104
0 commit comments