Spaces:
Runtime error
Runtime error
import logging | |
import boto3 | |
from botocore.exceptions import ClientError | |
import os | |
from datetime import datetime | |
import torch | |
def upload_file(file_name, bucket="fishcounting", object_name=None): | |
"""Upload a file to an S3 bucket | |
:param file_name: File to upload | |
:param bucket: Bucket to upload to | |
:param object_name: S3 object name. If not specified then file_name is used | |
:return: True if file was uploaded, else False | |
""" | |
# If S3 object_name was not specified, use file_name | |
if object_name is None: | |
object_name = os.path.basename(file_name) | |
if (not 'AAK_ID' in os.environ) or (not 'ASAK' in os.environ): | |
print('AWS keys not specified. Cancelling sync') | |
return False | |
# Upload the file | |
s3_client = boto3.client( | |
's3', | |
aws_access_key_id=os.environ['AAK_ID'], | |
aws_secret_access_key=os.environ['ASAK'] | |
) | |
try: | |
response = s3_client.upload_file(file_name, bucket, object_name) | |
except ClientError as e: | |
logging.error(e) | |
return False | |
return True | |
def ping_server(aris_name, state): | |
"""Upload a notification file to AWS | |
:param aris_name: Name of the aris file uploaded | |
:return: True if file was uploaded, else False | |
""" | |
file_name = 'tmp/notification.txt' | |
os.makedirs('tmp', exist_ok=True) | |
with open(file_name, 'w') as f: | |
output = f"time: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n" | |
output += f"filename: {aris_name}\n" | |
output += f"app version: {state['version']}\n" | |
output += f"hardware: {torch.cuda.get_device_name() if torch.cuda.is_available() else 'CPU'}\n" | |
if 'CPU_CORES' in os.environ: | |
output += f"location: HuggingFace\n" | |
output += f"nbr cpu cores: {os.environ['CPU_CORES']}\n" | |
output += f"memory: {os.environ['MEMORY']}\n" | |
else: | |
output += f"location: local install" | |
f.write(output) | |
# If S3 object_name was not specified, use file_name | |
if (not 'AAK_ID' in os.environ) or (not 'ASAK' in os.environ): | |
print('AWS keys not specified. Cancelling sync') | |
return False | |
# Upload the file | |
s3_client = boto3.client( | |
's3', | |
aws_access_key_id=os.environ['AAK_ID'], | |
aws_secret_access_key=os.environ['ASAK'] | |
) | |
try: | |
response = s3_client.upload_file(file_name, "fishcounting", "webapp_uploads/notifications/" + str(int(datetime.now().timestamp())) + ".txt") | |
except ClientError as e: | |
logging.error(e) | |
return False | |
return True |