Estoy tratando de probar las funcionalidades de mi aplicación Django.
Algunas de mis tareas son usar apio.
¿Cómo puedo ejecutar el apio en mi entorno de prueba usando PyCharm?

1
Dandelion 29 sep. 2019 a las 09:15

3 respuestas

La mejor respuesta

Supongo que está utilizando el decorador shared_task y ejecuta las tareas como function_name.delay ()

Esto podría probarse agregando un condicional que ejecute la tarea si se ejecuta localmente (o mediante una prueba) y usa apio en la producción. Esto también permite ejecutar el servidor localmente sin usar apio, y eso puede ser más fácil de depurar y mantener.

PRODUCTION = False

if PRODUCTION:
    some_task.delay()
else:
    some_task()

También se podría crear un decorador que haga lo mismo, que es más bonito, pero quizás más complicado de mantener.

2
Daniel Lee 30 sep. 2019 a las 09:10

Para hacer pruebas unitarias sin probar las cosas de apio, es posible que desee burlarse de su decorador @shared_task

from unittest import mock

@mock.patch('celery.shared_task', lambda *args, **kwargs: lambda func: func)
def test_celery_unit()
    from tasks import mytask
    result = mytask() # could be call just as a function
1
Greenev 30 sep. 2019 a las 08:53

El uso de simulacro resolverá su problema.

0
Sai Krishna 29 sep. 2019 a las 06:24
58152777