Django как я могу использовать многопроцессорность в команде управления
как использовать мультипроцессинг в команде управления django? Я не могу понять, как запустить процесс внутри контекста django моих сайтов
команда управления
users = users.objects.filter(is_active=True)
with ProcessPoolExecutor(max_workers=5) as executor:
processes = []
for user in users:
p = executor.submit(complex_user_calculation,user)
processes.append(p)
for f in concurrent.futures.as_completed(processes):
result = f.result()
if result:
print(result)
Когда я запускаю эту команду управления, я получаю эту ошибку
raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
...
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\concurrent\futures\_base.py", line 390, in __get_result
raise self._exception
concurrent.futures.process.BrokenProcessPool: A process in the process pool was terminated abruptly while the future was running or pending.
Вам необходимо инициализировать ваше приложение Django в каждом подпроцессе, чтобы убедиться, что все ваши приложения, модели и т.д. загружены. Передайте django.setup
в качестве инициализатора пула
with ProcessPoolExecutor(max_workers=5, initializer=django.setup) as executor:
...