remove so many transactions
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Torma Kristóf 2020-10-20 00:15:37 +02:00
parent 5a64c72cc9
commit 5e29de0c44
Signed by: tormakris
GPG Key ID: DC83C4F2C41B1047

View File

@ -4,7 +4,6 @@ from xeger import Xeger
from flask_restful import Resource from flask_restful import Resource
from flask import request, current_app from flask import request, current_app
import requests import requests
from sentry_sdk import start_transaction
import pika import pika
from db import db from db import db
from models import SampleMetadata from models import SampleMetadata
@ -35,37 +34,32 @@ class SampleResource(Resource):
Post request send to the endpoint Post request send to the endpoint
:return: :return:
""" """
with start_transaction(op="get-file", name="get-file-from-request"): if 'file' not in request.files:
if 'file' not in request.files: return {"err_msg": "no file found"}, 469
return {"err_msg": "no file found"}, 469 else:
else: soundfile = request.files['file']
soundfile = request.files['file']
with start_transaction(op="get-description", name="get-description-from-request"): if 'description' not in request.form:
if 'description' not in request.form: return {"err_msg": "no description found"}, 470
return {"err_msg": "no description found"}, 470 else:
else: description = request.form.get("description")
description = request.form.get("description")
with start_transaction(op="validate-wave", name="validate-wave-type"): if soundfile.content_type != 'audio/wave':
if soundfile.content_type != 'audio/wave': current_app.logger.info(
current_app.logger.info( f"Input file was not WAV.")
f"Input file was not WAV.") return {'err_msg': 'Input file not a wave file.'}, 415
return {'err_msg': 'Input file not a wave file.'}, 415
with start_transaction(op="validate-description", name="validate-description-schema"): try:
try: desc = self.sampleschema.loads(description)
desc = self.sampleschema.loads(description) except Exception as e:
except Exception as e: current_app.logger.exception(e)
current_app.logger.exception(e) return {'err_msg': 'Input JSON schema invalid'}, 417
return {'err_msg': 'Input JSON schema invalid'}, 417
with start_transaction(op="tag-generate", name="generate-tag"): xeger = Xeger(limit=30)
xeger = Xeger(limit=30) while True:
while True: generated_tag = xeger.xeger(r'^[a-zA-Z]+[0-9a-zA-Z_]*$')[:32]
generated_tag = xeger.xeger(r'^[a-zA-Z]+[0-9a-zA-Z_]*$')[:32] if len(generated_tag) > 2: # Ensure minimum length
if len(generated_tag) > 2: # Ensure minimum length break
break
record = SampleMetadata( record = SampleMetadata(
device_id=desc['device_id'], device_id=desc['device_id'],
@ -82,21 +76,21 @@ class SampleResource(Resource):
soundfile, soundfile,
soundfile.content_type, soundfile.content_type,
{'Content-Length': soundfile.content_length})}).raise_for_status() {'Content-Length': soundfile.content_length})}).raise_for_status()
with start_transaction(op="rabbitmq-send", name="rabbitmq-connect-and-publish"): credentials = pika.PlainCredentials(current_app.config['FLASK_PIKA_PARAMS']['username'],
credentials = pika.PlainCredentials(current_app.config['FLASK_PIKA_PARAMS']['username'], current_app.config['FLASK_PIKA_PARAMS']['password'])
current_app.config['FLASK_PIKA_PARAMS']['password']) connection = pika.BlockingConnection(
connection = pika.BlockingConnection( pika.ConnectionParameters(host=current_app.config['FLASK_PIKA_PARAMS']['host'],
pika.ConnectionParameters(host=current_app.config['FLASK_PIKA_PARAMS']['host'], credentials=credentials,
credentials=credentials, heartbeat=0,
heartbeat=0, socket_timeout=5))
socket_timeout=5)) channel = connection.channel()
channel = connection.channel() channel.exchange_declare(exchange=current_app.config['EXCHANGE_NAME'],
channel.exchange_declare(exchange=current_app.config['EXCHANGE_NAME'], exchange_type='fanout')
exchange_type='fanout') channel.basic_publish(exchange=current_app.config['EXCHANGE_NAME'],
channel.basic_publish(exchange=current_app.config['EXCHANGE_NAME'], routing_key='feature',
routing_key='feature', body=json.dumps({'tag': generated_tag}).encode('UTF-8'))
body=json.dumps({'tag': generated_tag}).encode('UTF-8')) connection.close()
connection.close()
except Exception as e: except Exception as e:
current_app.logger.exception(e) current_app.logger.exception(e)
db.session.rollback() db.session.rollback()
@ -106,13 +100,14 @@ class SampleResource(Resource):
db.session.commit() db.session.commit()
return {"tag": generated_tag}, 200 return {"tag": generated_tag}, 200
def get(self):
""" def get(self):
Get all stored items """
:return: Get all stored items
""" :return:
samples = SampleMetadata.query.all() """
return self.samplemetadataschema.dump(list(samples)), 200 samples = SampleMetadata.query.all()
return self.samplemetadataschema.dump(list(samples)), 200
class SampleParameterResource(Resource): class SampleParameterResource(Resource):