170 похожих чатов

Вопрос по best practiсies. Есть модуль со следующей структурой: module/ —sub/ ——config.py ——functions.py —main.py В main.py запускается

web-socket клиент, который принимает функцию как параметр on_message. У меня эта функция использует Redis, и соответственно я подключаюсь к нему в файле functions.py вне всех функций (глобально), что конечно же не очень здорово. Но и как параметр я его передать не могу, т.к. функция on_message может содержать только сам веб-сокет и сообщение.

Так вот, как использовать Redis в функции, чтобы не объявлять её глобально в functions.py?

Немного кода:
#module/main.py
ws = websocket.WebSocketApp(cfg.API_URL, on_message=fn.on_message)
ws.run_forever()

#module/sub/functions.py
redis_db = redis.StrictRedis(
host=cfg.REDIS['host'],
port=cfg.REDIS['port']
)

def on_message(ws, message):
...
redis_db.hset(key, val, json.dumps(message))

P.S. У меня весь код процедурный, ООП нет, так что тупо переписать и использовать как self.redis даже не предлагайте.
Спасибо.

5 ответов

18 просмотров

все норм, ничего криминального нет

practisies -> practices

Не любишь ООП — прокидывай везде структуру со всякими глобальными коннекшнами, щито поделать

functools.partial передавать коннект первым аргументом

можно еще как-то так https://pastebin.com/5xjSnTbQ как работает хз, не проверял 🤠

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта