Создайте и сохраните объект сервиса в корне приложения django
Я создал базовое приложение django, в котором установлена пользовательская библиотека (использует Asyncio). Мне нужно инстанцировать фабричный класс из библиотеки, а затем использовать его для получения некоторых объектов сервиса для использования в приложении.
creds = load_creds('./creds.json')
async with TestFactory(creds) as factory:
tickets = factory.get_ticket()
results = await tickets.find_by_number('IN12345678')
print (results.ticket_group)
Я изучаю Django только последние несколько дней. Поэтому я не уверен, где лучше всего разместить этот код. Мне просто нужно, чтобы он сохранял объекты сервиса, которые я создаю из класса фабрики, и делал их доступными для остальной части приложения до тех пор, пока приложение работает, т.е. scaffold once, always accessible.
С точки зрения c#, я мог бы сделать это во время запуска приложения и передать его через DI.
Я обычно помещаю такие вещи в специальный файл monkey_patches.py и импортирую его в центральный urls.py (оба файла в одном каталоге):
monkey_paches.py
# needed imports
def run_monkeypatches():
# code for patches of some other modules, libraries and so on
urls.py
# all other imports needed for urls
from .monkeypatches import run_monkeypatches
urlpatterns = [
# all the urls
]
run_monkeypatches() # last line in urls.py
Таким образом, этот код будет выполняться после того, как все будет установлено, и только один раз.
Альтернативой может быть размещение внутри settings.py и оставление там объектов. Затем вы можете получить доступ к этим объектам через django.conf.settings.my_object из любого другого модуля приложения, который импортирует django.conf.