2012-03-06 21 views
8

Necesito tener una tarea de apio después de una cuenta regresiva, pero ser capaz de restablecer esa cuenta regresiva bajo ciertas condiciones. Por ejemplo, quiero llamar al apply_async con countdown=15, pero si ocurre algún evento antes de que se ejecute la tarea, me gustaría establecer esa cuenta regresiva a 15 segundos nuevamente.Restablecer la cuenta atrás en la tarea de apio

De los documentos y de Google creo que podría lograr esto guardando la identificación de la tarea, y luego revocando y recreando la tarea si ocurre el evento. Me preguntaba si hay un enfoque más elegante para ello.

Respuesta

1

En lugar de configurar la cuenta atrás, ¿no puede simplemente revocar esta tarea y crear una nueva?

+1

Bueno, como dije, eso es lo que se me ocurrió después de leer la documentación, pero en ese momento no me parecía correcto, así que me preguntaba si había otra forma de hacerlo. –

0

Use alguna memoria caché, como Redis, para almacenar alguna clave de bloqueo. Cuando llame a apply_async, incremente el valor de la clave. Cuando ejecuta esta tarea en apio, disminuya este valor. Si el valor es 0: ejecuta la tarea. Entonces, si hubo dos llamadas de apply_async, su contador será 2 y se omitirá la primera ejecución de la tarea.

Creo this code can help you.

Cuestiones relacionadas