Где в Django объявлять глобальные переменные типо connection и т.д.?

Здравствуйте!

У меня сервер на Django и в при определенных запросах мне нужно отправлять задания на другой сервер RabbitMQ.

Делаю я это при помощи AMQP библиотеки pika (как тут)

Для того, чтобы послать запрос на RabbitMQ при помощи pika нужно:

# создать подключение
connection = pika.BlockingConnection(pika.ConnectionParameters(host='my_IP_addres'))
# канал
channel = connection.channel()
# объявить очередь
channel.queue_declare(queue='gcm_sender')
# и послать в нее все, что душе угодно
channel.basic_publish(exchange='', routing_key='gcm_sender', body='все, что душе угодно')


Естественно, создавать подключение, канал и объявлять очередь в каждом запросе (в определенном обработчике views.py) не правильно - т.к. это это будет происходить при каждом запросе.

Очевидно, что мне нужно один раз создать подключение, канал и очередь, а во вьюхах использовать только отправку
channel.basic_publish(exchange='', routing_key='gcm_sender', body='все, что душе угодно')


Единственное, я не знаю где корректно объявлять такие глобальные объекты... Думал на счет settings.py... но все-таки это же не настройки... Так, что хотелось бы узнать ваше профессиональное мнение.

Где вы обычно объявляете глобальные объекты?

Заранее спасибо за ответ.
PS Кстати, это же относится к объекту logger = logging.getLogger(__name__), пока объявляю его в views.py, сразу после import'ов...
  • Вопрос задан
  • 4508 просмотров
Пригласить эксперта
Ответы на вопрос 1
ali_aliev
@ali_aliev
Разработчик на Django/Python, JavaScript
Нельзя объявлять глобальные объекты, они нарушают архитектуру и могут вызвать много проблем! Для константных переменных и настроек это нормально, делать объявление в settings.py.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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