1
1
import shutil
2
- import tempfile
3
2
from datetime import datetime
4
3
5
4
from skyvern .config import settings
6
5
from skyvern .forge .sdk .api .aws import AsyncAWSClient
7
- from skyvern .forge .sdk .api .files import unzip_files
6
+ from skyvern .forge .sdk .api .files import (
7
+ create_named_temporary_file ,
8
+ get_skyvern_temp_dir ,
9
+ make_temp_directory ,
10
+ unzip_files ,
11
+ )
8
12
from skyvern .forge .sdk .artifact .models import Artifact , ArtifactType
9
13
from skyvern .forge .sdk .artifact .storage .base import FILE_EXTENTSION_MAP , BaseStorage
10
14
from skyvern .forge .sdk .models import Step
@@ -36,7 +40,7 @@ async def store_artifact_from_path(self, artifact: Artifact, path: str) -> None:
36
40
await self .async_client .upload_file_from_path (artifact .uri , path )
37
41
38
42
async def save_streaming_file (self , organization_id : str , file_name : str ) -> None :
39
- from_path = f"{ settings . STREAMING_FILE_BASE_PATH } /{ organization_id } /{ file_name } "
43
+ from_path = f"{ get_skyvern_temp_dir () } /{ organization_id } /{ file_name } "
40
44
to_path = f"s3://{ settings .AWS_S3_BUCKET_SCREENSHOTS } /{ settings .ENV } /{ organization_id } /{ file_name } "
41
45
await self .async_client .upload_file_from_path (to_path , from_path )
42
46
@@ -46,7 +50,7 @@ async def get_streaming_file(self, organization_id: str, file_name: str, use_def
46
50
47
51
async def store_browser_session (self , organization_id : str , workflow_permanent_id : str , directory : str ) -> None :
48
52
# Zip the directory to a temp file
49
- temp_zip_file = tempfile . NamedTemporaryFile ()
53
+ temp_zip_file = create_named_temporary_file ()
50
54
zip_file_path = shutil .make_archive (temp_zip_file .name , "zip" , directory )
51
55
browser_session_uri = f"s3://{ settings .AWS_S3_BUCKET_BROWSER_SESSIONS } /{ settings .ENV } /{ organization_id } /{ workflow_permanent_id } .zip"
52
56
await self .async_client .upload_file_from_path (browser_session_uri , zip_file_path )
@@ -56,11 +60,11 @@ async def retrieve_browser_session(self, organization_id: str, workflow_permanen
56
60
downloaded_zip_bytes = await self .async_client .download_file (browser_session_uri , log_exception = True )
57
61
if not downloaded_zip_bytes :
58
62
return None
59
- temp_zip_file = tempfile . NamedTemporaryFile (delete = False )
63
+ temp_zip_file = create_named_temporary_file (delete = False )
60
64
temp_zip_file .write (downloaded_zip_bytes )
61
65
temp_zip_file_path = temp_zip_file .name
62
66
63
- temp_dir = tempfile . mkdtemp (prefix = "skyvern_browser_session_" )
67
+ temp_dir = make_temp_directory (prefix = "skyvern_browser_session_" )
64
68
unzip_files (temp_zip_file_path , temp_dir )
65
69
temp_zip_file .close ()
66
70
return temp_dir
0 commit comments