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 |