Мне нужно сделать регулярно работающую очередь, когда она не пуста в Django

ПРОЕКТ: Я делаю веб-приложение, в котором пользователи отправляют ZIP-файл, он сохраняется в папку. Есть VM, которая постоянно ищет папку, в которую распаковывается ZIP. Обратите внимание, что VM всего 1. Поэтому я должен извлечь, поспать 20 секунд и удалить файлы из этой папки, VM генерирует результаты, затем мое приложение Django генерирует CSV из этих файлов и возвращает пользователю как загружаемый. Вот такой поток.

Проблема: MultiUsers: Я использую файл, как показано ниже

def Uplaoder(request):
file=takenFromPost() #lets assume this works.
with open('busy.txt', 'r') as f:
    if "false" in f:
        with open('busy.csv', 'w') as f:
            f.write('true') #here I made it true so that if its true, the request doesn't disturb it as single VM
            f.close()
        finalcsv=workFurther() #here is the whole process lets say.
        with open('busy.csv', 'w') as f:
            f.write('false')
            f.close()
            return render(request, 'worked.html', {'finalcsv':finalcsv})
    elif "true" in f:
        Uploader(request) #here I send this request again to this so that the user keeps waiting and when the
                          #files gets generated for the second user, he gets the response.

        
    

Вот пример логики, так же как работает мой код.

Проблема: Логика показалась мне хорошей, но браузер не ждет долго и, вероятно, получает таймаут, может быть, но отбрасывает запрос через определенное время. Я напечатал каждый шаг с нумерацией, 2-й запрос обрабатывается до ожидания, но сбрасывается в середине, но работает идеально для пользователя 1. потому что код спит 50 секунд по крайней мере во время процессов для VM.

Решение, которое мне пришло в голову: Что если мы сохраним этот файл в папке Queue и добавим в список, сканер сфокусируется на Queue[0] и затем выскочит Queue[0] и удалит файл (zip файл) из папки. Таким образом, код будет продолжать выполняться и создавать файл user_email.csv, а затем, используя Ajax на стороне пользователя, мы можем продолжить запрос после 10 запросов, чтобы как-то искать файл f"{request.session['email']}.csv".

Проблема в том, что когда первый запрос возвращает ответ как запрос рендеринга HTML страницы, как я могу заставить его перейти к следующему процессу, потому что он вернется и будет ждать вызова следующим приходящим запросом, даже если я запрошу вышеуказанным способом, причина этого не работает.

Это Django приложение, есть ли у вас какое-нибудь решение, которое не так сложно, нужно ли мне сделать новый файл python, работающий параллельно с сервером, который читает очередь, записанную в файле, берет файл, обрабатывает и помещает в csv. затем Ajax запросы и приложение проверяет файл, если он присутствует, а затем отвечает соответственно, а затем django приложение только сохраняет файлы и добавляет в очередь, а внешний скрипт изменяет скрипт, файл Busy.txt? Лучше всего, если ответ будет простым решением, потому что я застрял на этом и должен выбраться из этого к сегодняшнему дню. Спасибо заранее. "Вместе мы бьем сильнее"

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