Короче
: ищу способ передачи сообщений журнала в json, который используется в другом отдельном / многопроцессорном скрипте.
Я использую теневой протокол AWS-IoT для связи с моей облачной службой.На моем локальном устройстве я использовал Loguru для регистрации.Тем не менее, при входе я хочу, чтобы информация также находилась в облаке.Поэтому я решил, что мне нужно получить сообщение журнала в тени json и обновить файл тени в облаке.
Мой основной класс содержит тень:
class MyIoTClass:
def __init__(self):
self.shadow = {"logs": {"timestamp": time.time(), "message": ...}, "the_real_information": "some controls"}
Теперь ямой сценарий запущен, где я делаю много вещей с теневым файлом:
device = MyIoTClass()
device.upload_new_json_to_aws()
...
Регистрация где-то в моем коде logging.info("info message")
, который я хочу отобразить в self.shadow
json и запустить upload_new_json_to_aws()
function.
Я перепробовал множество вещей, таких как получение результатов регистрации в канале и использование его в подпроцессе / многопроцессорности.Вот некоторый псевдокод того, что я пытался сделать в разных вариантах:
# subprocess
def update_logs(device, stdin)
device.shadow["logs"]["message"] = stdin
device.upload_new_json_to_aws()
# start multiprocess
p = multiprocess(update_logs)
# logging
logging.add(p)
Если что-то регистрируется, например, logging.warning("some warning")
Я хочу, чтобы сообщение "some warning"
появилось в self.shadow
и запустило обновление.
Есть какой-нибудь изящный способ справиться с этим или я просто упустил очевидное решение?
Спасибо всем!