Si encuentras alguna parte que te causa duda puedes dejarlo en los comentarios y trataremos de ayudarte tan rápido como podamos.
Continué usando esta implementación a escala y en producción sin problemas.
Definición de decorador:
def start_new_thread(function):
def decorator(*args, **kwargs):
t = Thread(target = function, args=args, kwargs=kwargs)
t.daemon = True
t.start()
return decorator
Ejemplo de uso:
@start_new_thread
def foo():
#do stuff
Con el tiempo, la pila se actualizó y realizó la transición sin fallas.
Originalmente Python 2.4.7, Django 1.4, Gunicorn 0.17.2, ahora Python 3.6, Django 2.1, Waitress 1.1.
Si está utilizando transacciones de base de datos, Django creará una nueva conexión y esta debe cerrarse manualmente:
from django.db import connection
@postpone
def foo():
#do stuff
connection.close()
El apio es una cola de tareas/cola de trabajos asincrónica. Está bien documentado y es perfecto para lo que necesitas. Te sugiero que empieces aquí
La forma más común de realizar un procesamiento asíncrono en Django es usar Celery y django-celery
.