Простой способ создать API для какой-то задачи

Бессерверные вычисления – это модель выполнения облачных вычислений, в которой поставщик облачных услуг выделяет машинные ресурсы по требованию, заботясь о серверах от имени своих клиентов.

Бессерверные вычисления не хранят ресурсы в энергозависимой памяти; вычисления скорее выполняются короткими пакетами, а результаты сохраняются в хранилище.

Когда приложение не используется, ему не выделяются вычислительные ресурсы. Цены основаны на фактическом количестве ресурсов, потребляемых приложением.

Но в бессерверной версии все еще есть серверы, но они абстрагированы от разработки приложений. Поставщик облачных услуг выполняет рутинную работу по подготовке, обслуживанию и масштабированию серверной инфраструктуры. Разработчики могут просто упаковать свой код в контейнеры для развертывания.

Роль бессерверных вычислений в цифровой трансформации:

Бессерверные вычисления играют важную роль в цифровой трансформации. Во-первых, это позволяет разработчикам работать более продуктивно, помогая им сосредоточиться на написании кода, имеющего ценность для бизнеса, не беспокоясь о базовой инфраструктуре, которая будет поддерживать этот код. Независимо от вертикальной отрасли или размера компании, стратегия бессерверных вычислений может помочь повысить производительность разработчиков за счет устранения накладных расходов на управление.

К особенностям среды разработки программного обеспечения для бессерверных вычислений относятся:

  • Управление нулевым сервером
  • Автоматическое масштабирование для удовлетворения меняющихся требований к трафику
  • Управляемая интегрированная безопасность

К основным поставщикам бессерверных вычислений относятся:

  • Облачные функции Google
  • АВС Лямбда
  • Облачные функции IBM
  • Функции Microsoft Azure

Бизнес-проблема:

Развертывание кода для Автоматического редактирования видео и предоставление ссылки на видео пользователю

Решение:

Получите статический файл из облачного хранилища и сделайте видео, затем вы должны сохранить это видео в облачном хранилище и поделиться ссылкой на данные, которые хранятся в облачном хранилище.

Здесь я использовал Google Cloud Function для развертывания.

Требования:

# Function dependencies, for example:
# package>=version
moviepy~=1.0.3
Pillow~=8.2.0
google-cloud-storage~=1.40.0
NumPy

Для извлечения данных из облачного хранилища я использовал библиотеку Google-cloud-storage.

Облачное хранилище Google позволяет хранить данные в инфраструктуре Google с очень высокой надежностью, производительностью и доступностью и может использоваться для распространения больших объектов данных среди пользователей посредством прямой загрузки.

Я использовал ведро, откуда извлекал файлы и сохранял их обратно

client = storage.Client()
bucket = client.get_bucket("video_editor_data")

Как получить данные из пути облачного хранилища в облачную функцию

bucket.list_blobs(prefix=’Project_video_editing/output/’):

Получить изображение из URL-адреса в облачную функцию

response = requests.get(url, stream=True)
img2 = Image.open(io.BytesIO(response.content))

Получить тип шрифта из облачного хранилища

# Custom font style and font size
font= bucket.blob("Project_video_editing/HELVETICAINSERATLTSTD-ROMAN.OTF")
myFont = ImageFont.truetype(io.BytesIO(font.download_as_bytes()),60)

Здесь я использовал tmp-память облачной функции, где я могу загрузить статический файл и сохранить его. Из-за этого нет необходимости каждый раз загружать статический файл.

mp4_1= bucket.blob("Project_video_editing/part1.mp4")
mp4_1.download_to_file(open("/tmp/part1.mp4", "wb"))
clip1 = VideoFileClip("/tmp/part1.mp4")

Проблема, с которой я сталкиваюсь при этом, заключается в том, что нет прямого способа сохранить файлы в облачном хранилище из облачной функции.

Небольшой хак, я создал временный файл в памяти tmp для записи и передачи

temp_output="/tmp/outputx.mp4"
with open(temp_output, 'w') as fp:
     pass

Изменив направление указателя ОС и сохранив там файл с именем .mp4 в памяти tmp.

finl.write_videofile("/tmp/testing.mp4",temp_audiofile=temp_output)

Затем, наконец, загрузите этот файл в облачное хранилище из памяти tmp.

output_blob = bucket.blob("name_of_save_file.mp4")
output_blob.upload_from_filename("/tmp/testing.mp4")

Использовать URL-адрес триггера в качестве API для обращения

В бессерверной модели разработчик может написать функцию на своем любимом языке программирования и опубликовать ее на бессерверной платформе. Поставщик облачных услуг управляет инфраструктурой и программным обеспечением и сопоставляет функцию с конечной точкой API, прозрачно масштабируя экземпляры функции по требованию.

Вывод:

Serverless Store состоит как из приложения, так и из функций. Это гибрид, в котором центральным элементом является стандартное (традиционное, если хотите) веб-приложение Python flask, а также множество важных и дополнительных функций, обслуживаемых Cloud Functions. Для людей, предпочитающих шаблон FaaS, с относительно небольшими усилиями можно сделать бессерверное хранилище чисто функциональным; вы также можете легко вернуть его обратно в веб-приложение вообще без работников облачных функций, готовое к развертыванию виртуальной машины.

Весь код вы можете найти здесь

Автоматическое редактирование видео с помощью Python

Спасибо, что прочитали эту статью…