Как получить регистрационную информацию в словаре другого процесса (многопроцессный) - PullRequest
0 голосов
/ 28 января 2019
Короче

: ищу способ передачи сообщений журнала в 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 и запустило обновление.

Есть какой-нибудь изящный способ справиться с этим или я просто упустил очевидное решение?

Спасибо всем!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...