2021-03-10 13:55:06 +00:00
|
|
|
from flask import Blueprint, jsonify, request
|
2017-04-06 12:14:17 +01:00
|
|
|
|
2018-08-31 16:49:06 +01:00
|
|
|
from app.celery.tasks import process_returned_letters_list
|
2018-11-15 17:24:37 +00:00
|
|
|
from app.config import QueueNames
|
|
|
|
|
from app.letters.letter_schemas import letter_references
|
2017-04-06 12:14:17 +01:00
|
|
|
from app.schema_validation import validate
|
2018-11-15 17:24:37 +00:00
|
|
|
from app.v2.errors import register_errors
|
2017-04-06 12:14:17 +01:00
|
|
|
|
|
|
|
|
letter_job = Blueprint("letter-job", __name__)
|
|
|
|
|
register_errors(letter_job)
|
|
|
|
|
|
2022-03-01 15:07:57 +00:00
|
|
|
# too many references will make SQS error (as the task can only be 256kb)
|
|
|
|
|
MAX_REFERENCES_PER_TASK = 5000
|
|
|
|
|
|
2017-04-06 12:14:17 +01:00
|
|
|
|
2018-08-31 16:49:06 +01:00
|
|
|
@letter_job.route('/letters/returned', methods=['POST'])
|
|
|
|
|
def create_process_returned_letters_job():
|
2022-03-01 15:07:57 +00:00
|
|
|
references = validate(request.get_json(), letter_references)['references']
|
2018-08-31 16:49:06 +01:00
|
|
|
|
2022-03-01 15:07:57 +00:00
|
|
|
for start_index in range(0, len(references), MAX_REFERENCES_PER_TASK):
|
|
|
|
|
process_returned_letters_list.apply_async(
|
|
|
|
|
args=(references[start_index:start_index + MAX_REFERENCES_PER_TASK], ),
|
|
|
|
|
queue=QueueNames.DATABASE,
|
|
|
|
|
compression='zlib'
|
|
|
|
|
)
|
2018-08-31 16:49:06 +01:00
|
|
|
|
2022-03-01 15:07:57 +00:00
|
|
|
return jsonify(references=references), 200
|