remove so many transactions
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
5a64c72cc9
commit
5e29de0c44
@ -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):
|
||||||
|
Loading…
Reference in New Issue
Block a user