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 даже не предлагайте.
Спасибо.
все норм, ничего криминального нет
practisies -> practices
Не любишь ООП — прокидывай везде структуру со всякими глобальными коннекшнами, щито поделать
functools.partial передавать коннект первым аргументом
можно еще как-то так https://pastebin.com/5xjSnTbQ как работает хз, не проверял 🤠
Обсуждают сегодня