Configuramos una tarea asíncrona usando Django, celery y rabbitMQ. Aquí nuestro objetivo es realizar tareas como la transcodificación de video, la generación de miniaturas, la compresión de imágenes y el escalado de imágenes en conjunto.
Seguimos el tutorial a continuación para implementarlo y la tarea asincrónica funciona correctamente en Localhost. Para la compatibilidad de producción, usamos supervisord para iniciar los trabajadores de apio y reiniciar en caso de que el sistema se reinicie o falle.
Cuando intentamos implementar lo mismo en AWS EC2, no podemos instalar ni configurar Supervisord en AWS EC2. Por lo tanto, debemos iniciar el apio manualmente cada vez. ¿Alguien puede ayudarnos a instalar y manejar este procedimiento en AWS EC2?
El código que estamos usando
task.py from __future__ import absolute_import from test_celery.celery import app import time @app.task def longtime_add(x, y): print 'long time task begins' # sleep 5 seconds time.sleep(5) print 'long time task finished' return x + y celery.py from __future__ import absolute_import, unicode_literals import os from celery import Celery import afnity.settings as settings from django.conf import settings os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings') app = Celery('taskapp') app.config_from_object('django.conf:settings') if __name__ == '__main__': app.start()configuración.py
BROKER_URL = 'amqp://guest:guest@localhost//' CELERY_RESULT_BACKEND = 'redis://%s:%d/%d' % ('localhost', 6379, 0)