Как я могу использовать многопоточность в представлении в Django?

Итак, я развернул свое первое приложение на Digitalocean, что очень интересно, но также имеет некоторые отличия от среды разработки.

У меня есть представление, которое вызывает функцию для обновления данных, запрашиваемых из API, что занимает около 2-3 минут. Однако Digitalocean прекращает работу рабочего - по уважительным причинам - через 30 секунд, поэтому процесс прерывается.

[2022-08-21 08:40:10 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:25)

Как я могу реализовать поток для выполнения run_post_publisher() в "фоновом режиме"?

Вот вид и упомянутая функция run_post_publisher(), в которой я пытался реализовать поток.

def execute_post_publisher(request):
    
    t = threading.Thread(target=run_post_publisher())
    t.setDaemon(True)
    t.start()

    return HttpResponse(f'New post will be created')

Однако это также занимает некоторое время для запуска представления. Разве это не означает, что нужно просто выполнить поток и завершить запрос представления, а поток будет работать в фоновом режиме?

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