Обработка SOAP POST-запроса для DataBricks через Spark API

Я пытаюсь создать в Azure Databricks функциональность, которая бы извлекала значение из входящего почтового запроса SOAP (XML-файла), предпочтительно с использованием Python / PySpark, который затем использовался бы в другом процессе, использующем Python. requests библиотека для передачи туда и обратно нескольких запросов SOAP, а затем сохраняет полученные необработанные данные в хранилище BLOB-объектов Azure.

Извлечение значения из SOAP-пост-запроса для контекста:

from bs4 import BeautifulSoup

template_source = '/.../template.xml'


def edit_template(incoming_soap_string, template_source_file):
    """ This function retrieves the ID,
    spits out a copy of the content of the template containing the ID,
    makes it ready for a SOAP request body"""

    # Get the ID from the incoming the SOAP XML
    soup = BeautifulSoup(incoming_soap_string, "xml")
    ID = soup.param.attrs.get('value')

    # Open the template file line by line:
    with open(template_source_file) as source:
        # Lines that actually contain the fields that need replacing:
        line_numbers_to_parse = [6, 25, 35, 45, 55, 65, 75, 120, 130, 140, 150, 160, 170]
        line_number = 1
        output_string = ''
        for line in source:
            if line_number in line_numbers_to_parse:
                active_line = str(line)
                active_line = active_line.replace('REPLACE_THIS_FIELD', ID)
                output_string += active_line
            else:
                output_string += line
            line_number += 1
        return output_string

Я написал скрипты на Python, которые выполняют шаги вперед и назад, и сейчас я переписываю их в PySpark, но я столкнулся с тем фактом, что использование запросов POST менее тривиально.
Единственный способ найти то, что мне нужно, это flask библиотека вот так:

from flask import Flask, request

app = Flask(__name__)


@app.route('/', methods=['POST'])
def result():
    byte_string = request.data
    xml = byte_string.decode("utf-8")
    new_template = edit_template(xml, template_source)
    print(new_template)
    return new_template

Проблема с этим, однако, заключается в том, что было бы чрезвычайно трудно переписать эту реализацию в Spark API таким способом, который был бы масштабируемым. Итак, мои вопросы:

  • Есть ли способ полностью обойти записные книжки и по-разному воспринимать почтовый запрос, возможно, с использованием другой службы Azure?
  • Если нет, есть ли масштабируемый способ получения запросов на публикацию на Python без необходимости перезаписывать много библиотек?

0 ответов

Другие вопросы по тегам