Как настроить AutoLockRenewer() для полученных сообщений длительностью более пяти минут?Python

Программы на Python
Ответить
Anonymous
 Как настроить AutoLockRenewer() для полученных сообщений длительностью более пяти минут?

Сообщение Anonymous »

У меня возникли проблемы с использованием AutoLockRenewer(). У меня есть приложение со временем обработки сообщений до 20 минут, и я хочу соответственно установить блокировку сообщений на 20 минут.
def receive_messages(self, max_message_count: int) -> List[ServiceBusReceivedMessage]:
try:
received_messages = self._receiver.receive_messages(max_message_count=max_message_count,
max_wait_time=self.max_wait_time)
for message in received_messages:
self._auto_lock_renewer.register(
receiver=self._receiver,
renewable=message,
max_lock_renewal_duration=1200
)
self._completion_queue.append(ReceivedMessageInfo(message))
return received_messages

except (ServiceBusError, WebSocketConnectionClosedException) as e:
logging.error(f"Error in receiving messages: {e}. Reinitializing receiver.")
self._receiver = self._initialize_receiver()
return []

К сожалению, когда я устанавливаю max_lock_renewal_duration=1200, я получаю эту ошибку в журналах, где четко видно 5-минутное ограничение блокировки. И max_lock_renewal_duration этого не меняет. Может ли кто-нибудь предложить способ заблокировать сообщение и продлить его блокировку на время выполнения функции обработки (скажем, 20 минут)?
Журналы:
2025-01-10 21:10:23,387 - DEBUG - got bool_launch_service_bus True so launching service bus
2025-01-10 21:10:23,387 - DEBUG - Launch time: 10/01/2025 21:10:23
2025-01-10 21:10:54,846 - DEBUG - Running lock auto-renew for ServiceBusReceivedMessage(body={

"CorrelationId": "id",

"MessageType": type,

"BlobNameRequest": null,

"FileId": "id",

"BatchId": id,

"DocumentId": 0,

"Body": "{}",

"CoreError": null

}, application_properties={b'SiteEnv': b'local', b'CoreEnv': b'local'}, session_id=None, message_id=f3c75e6a2cde4fea9aa22700f273b8a6, content_type=application/json, correlation_id=None, to=None, reply_to=None, reply_to_session_id=None, subject=None, time_to_live=14 days, 0:00:00, partition_key=None, scheduled_enqueue_time_utc=None, auto_renew_error=None, dead_letter_error_description=None, dead_letter_reason=None, dead_letter_source=None, delivery_count=0, enqueued_sequence_number=13473, enqueued_time_utc=2025-01-10 19:11:05.117000+0 for None seconds
2025-01-10 21:15:53,794 - DEBUG - Running lock auto-renew for ServiceBusReceivedMessage(body={

"CorrelationId": "id",

"MessageType": type,

"BlobNameRequest": null,

"FileId": "id",

"BatchId": id,

"DocumentId": 0,

"Body": "{}",

"CoreError": null

}, application_properties={b'SiteEnv': b'local', b'CoreEnv': b'local'}, session_id=None, message_id=f3c75e6a2cde4fea9aa22700f273b8a6, content_type=application/json, correlation_id=None, to=None, reply_to=None, reply_to_session_id=None, subject=None, time_to_live=14 days, 0:00:00, partition_key=None, scheduled_enqueue_time_utc=None, auto_renew_error=None, dead_letter_error_description=None, dead_letter_reason=None, dead_letter_source=None, delivery_count=1, enqueued_sequence_number=13473, enqueued_time_utc=2025-01-10 19:11:05.117000+0 for None seconds

2025-01-10 21:15:55,725 - DEBUG - 10 seconds or less until lock expires - auto renewing.
2025-01-10 21:15:56,021 - DEBUG - Management operation completed, id: 'd85d5299-17e4-42cf-90a9-228360e06f95'; result: ; code: 410; description: b'The lock supplied is invalid. Either the lock expired, or the message has already been removed from the queue. For more information please see https://aka.ms/ServiceBusExceptions . Reference:c99fe38a-45c0-4cbb-9b15-0b16ff2ef556, TrackingId:1277d4c5-573e-498a-8419-58f1d0115ff0_B17, SystemTracker:raccoondoc-dev-servicebus:Topic:deskew|local, Timestamp:2025-01-10T19:16:07', error: None
2025-01-10 21:15:56,022 - INFO - AMQP error occurred: (None), condition: (b'com.microsoft:message-lock-lost'), description: ("Message lock renew failed. b'The lock supplied is invalid. Either the lock expired, or the message has already been removed from the queue. For more information please see https://aka.ms/ServiceBusExceptions . Reference:c99fe38a-45c0-4cbb-9b15-0b16ff2ef556, TrackingId:1277d4c5-573e-498a-8419-58f1d0115ff0_B17, SystemTracker:raccoondoc-dev-servicebus:Topic:deskew|local, Timestamp:2025-01-10T19:16:07'.").
2025-01-10 21:15:56,022 - DEBUG - Failed to auto-renew lock: MessageLockLostError("Message lock renew failed. b'The lock supplied is invalid. Either the lock expired, or the message has already been removed from the queue. For more information please see https://aka.ms/ServiceBusExceptions . Reference:c99fe38a-45c0-4cbb-9b15-0b16ff2ef556, TrackingId:1277d4c5-573e-498a-8419-58f1d0115ff0_B17, SystemTracker:raccoondoc-dev-servicebus:Topic:deskew|local, Timestamp:2025-01-10T19:16:07'. Error condition: com.microsoft:message-lock-lost. Status Code: 410."). Closing thread.


Подробнее здесь: https://stackoverflow.com/questions/793 ... ve-minutes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»