Size: a a a

2020 November 13

DK

D K in AWS_RU
error connecting to master .... - retry-time: 60  maximum-retries: 86400  message: Can't connect to MySQL server on '...' (4 "Interrupted system call")
источник

DK

D K in AWS_RU
в общем пиринг в помощь
источник

DK

D K in AWS_RU
хорошо что диапазоны не пересекаются
источник

AT

Al T in AWS_RU
ну да... хотя странно это выглядит, я не уверен что саппорт вас правильно понял
источник

K

Kristina in AWS_RU
здравствуйте!
Помогите разобраться с очередями. Нужно сделать сервис, который постоянно должен проверять сообщения в очереди и их процессить. Этот инстанс по умолчанию настроен так, что будет добавляться новая нода, в зависимости от нагрузки на CPU мастер ноды.

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

Каждое сообщение - ссылка на короткое видео, которое нужно запроцессить, поэтому, предположительно, что один консьюмер может в потоках обрабатывать до 10 видео одновременно, пока не начнет скейлиться дальше.

может есть какие-то разумные пути без бесконечных циклов?
источник

ФТ

Федя Тагил in AWS_RU
Kristina
здравствуйте!
Помогите разобраться с очередями. Нужно сделать сервис, который постоянно должен проверять сообщения в очереди и их процессить. Этот инстанс по умолчанию настроен так, что будет добавляться новая нода, в зависимости от нагрузки на CPU мастер ноды.

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

Каждое сообщение - ссылка на короткое видео, которое нужно запроцессить, поэтому, предположительно, что один консьюмер может в потоках обрабатывать до 10 видео одновременно, пока не начнет скейлиться дальше.

может есть какие-то разумные пути без бесконечных циклов?
источник

ФТ

Федя Тагил in AWS_RU
либо есть демон на гошке, который всегда подключен к очереди
https://github.com/tskinn/sqs-daemon
источник

K

Kristina in AWS_RU
Я использую boto3.

Так получаю сообщения:

def get_messages_from_queue(queue_url):
   """Generates messages from an SQS queue.

   Note: this continues to generate messages until the queue is empty.
   Every message on the queue will be deleted.

   :param queue_url: URL of the SQS queue to drain.

   """
   sqs_client = boto3.client("sqs")

   while True:
       resp = sqs_client.receive_message(
           QueueUrl=queue_url,
           AttributeNames=["All"],
           MaxNumberOfMessages=10,
           WaitTimeSeconds=10,
       )

       try:
           yield from resp["Messages"]
       except KeyError:
           return

       entries = [
           {"Id": msg["MessageId"], "ReceiptHandle": msg["ReceiptHandle"]}
           for msg in resp["Messages"]
       ]

       resp = sqs_client.delete_message_batch(
           QueueUrl=queue_url, Entries=entries
       )

       if len(resp["Successful"]) != len(entries):
           raise RuntimeError(
               f"Failed to delete messages: entries={entries!r} resp={resp!r}”


Так выглядит main:
from pprint import pprint
from time import sleep

while True:
   for message in get_messages_from_queue(QUEUE_URL):
           pprint(f"STARTING PROCESSING MESSAGE {message['Body']}")
           sleep(5)
           print(f"PROCESSING MESSAGE {message['Body']} COMPLETED”)
источник

K

Kristina in AWS_RU
Правильный ли это способ?
источник

ФТ

Федя Тагил in AWS_RU
пожалуйста, можете изобретать свой велосипед если хотите, а можете взять готовый
источник

K

Kristina in AWS_RU
Я просто хочу узнать правильно ли я мыслю и в том ли направлении 🙂
источник

ФТ

Федя Тагил in AWS_RU
оптимальным мне кажется было бы (раз уже есть код на питоне) положить это в Лямбду и настроить триггер из SQS очереди
какой смысл держать всегда  запущенным консюмер?
источник

ФТ

Федя Тагил in AWS_RU
пусть ламбда обрабатывает сообщения по мере их поступления
источник

K

Kristina in AWS_RU
На лямбде не хватит ресурсов для opencv 🙂
источник

K

Kristina in AWS_RU
Или хватит?
источник

ФТ

Федя Тагил in AWS_RU
если станет вдруг очень-очень много сообщений, то лямбда вывезет, а вот один консьюмер на инстансе - не факт
источник

ФТ

Федя Тагил in AWS_RU
если вы используете AWS - надо использовать сервисы AWS
источник

K

Kristina in AWS_RU
Федя Тагил
если станет вдруг очень-очень много сообщений, то лямбда вывезет, а вот один консьюмер на инстансе - не факт
Дык этот консьюмер уже скейлится, если есть нагрузка на CPU большая.
источник

ФТ

Федя Тагил in AWS_RU
сколько надо ресурсов для обработки одного сообщения в opencv?
источник

K

Kristina in AWS_RU
Так сразу не скажу, но макбук 19 года минутное видео обрабатывает примерно полторы минуты.
источник