Как заставить функцию выполняться x раз параллельно в Python/Django? [закрыто]

Я немного новичок в асинхронности в python. Мне нужна помощь, чтобы решить возникшую у меня проблему. Я хочу, чтобы функция выполнялась х раз параллельно (или асинхронно), не дожидаясь завершения каждого предыдущего процесса перед запуском следующего.

Я разрабатываю веб-приложение на Python в Django 3.2.7. Оказалось, что я создал скрипт, который выполняет автоматизацию (называется Catalina). В интерфейсе я задаю на форме количество раз, которое должна выполнить эта автоматизация.

Это мой forms.py, где я прошу запустить автоматизацию и указать количество ее запусков:

class Task_Form(forms.Form):

TASKS = (("1", "Catalina"),
("2", "Nosis"),)

task = forms.ChoiceField(choices = TASKS,
                            widget=forms.Select(attrs={'class': 'form-select'}))

number_processes = forms.IntegerField(widget=forms.NumberInput({
                                      'class': 'form-control',
                                      'placeholder': '1'
                                      }))

Я обнаружил, что в задней части, в views.py у меня есть следующее:

def load_task(request):
"""Renders the test page."""
assert isinstance(request, HttpRequest)

if request.method == 'POST':
    form = forms.Task_Form(request.POST, request.FILES)
    if form.is_valid():
        select = form.cleaned_data['task']
        number_processes = form.cleaned_data['number_processes']
        if select == '1':
            for i in range(number_processes):
                catalina.start()
      
        #elif select == '2':
        #    nosis.start(form.cleaned_data['archivo'])
else:
    form = forms.Task_Form()

return render(request,'app/loadfile.html', {
    'form': form,
    'title': 'Load File',})

В предыдущем коде я создаю цикл for, который будет повторяться x раз в зависимости от числа, которое вводит пользователь. Проблема в том, что это выполняется синхронно, поэтому пока функция catalina.start() не завершит первый раунд for, я не смогу перейти ко второму. Мне нужно, чтобы независимо от того, завершаю я выполнение catalina.start() в первый раз или нет, следующие функции выполнялись асинхронно. Я исследовал asyncio, но из-за своей неопытности не смог решить свою проблему. Мне нужна помощь, чтобы заставить эту функцию запускаться х раз параллельно, не дожидаясь завершения предыдущей функции.

Вернуться на верх