Найти тему

Модуль syslog стал потокобезопасным в Python

📜 Модуль syslog предоставляет интерфейс для отправки сообщений в системный лог демона (syslogd) операционной системы. Это позволяет логировать сообщения на сервере в централизованном месте, что может быть полезно для мониторинга и отладки приложений в среде сервера.

🛠 Реализация его находится в файле
Modules/syslogmodule.c, где находятся две важные изменяемые глобальные переменные:

static PyObject *S_ident_o = NULL; — переменная-указатель PyObject, которая используется для хранения строки идентификатора, передаваемой функции openlog().

static char S_log_open = 0; — переменная, которая используется для отслеживания, был ли инициализирован модуль посредством вызова openlog().

🏃🏻 Во избежание "race condition", эти переменные должны быть защищены. Вызовы функций syslog_openlog_impl(), syslog_syslog_impl(), syslog_closelog_impl(), открытия, записи и закрытия соответственно, обернули в CRITICAL_SECTION.

👉 Подробнее в телеграм канале https://t.me/cpython_ru

#PEP703