2011-01-26 27 views
6

Estoy considerando usar apio en mi proyecto. Encontré mucha información sobre cómo usarlo, etc. Lo que me interesa es cómo implementar/empaquetar mi solución.Apio con Django - despliegue

Necesito ejecutar dos componentes: la aplicación django y luego el trabajador apio (componente que envía correos electrónicos). Por ejemplo, me gustaría que mi aplicación django utilizara la tarea email_ticket que enviaría por correo electrónico tickets de soporte. Creo tasks.py en la aplicación django.

@task 
def email_ticket(from, message): 
... 

¿Implemento mi aplicación django y luego simplemente ejecuto apical como proceso separado de la misma ruta?

./manage.py celeryd ... 

¿Qué hay de los trabajadores en diferentes servidores? ¿Implementar toda la aplicación django y ejecutar solo apical? Entiendo que podría usar apio solo para el trabajador, pero me gustaría usar apiocam y celerybeat.

Se agradece cualquier comentario. Gracias

Gracias por cualquier comentario.

+0

Buena pregunta. La respuesta aceptada ("implementar todo") es ciertamente simple y robusta, pero no óptima. Tal vez alguien pueda pensar en una buena forma de distribuir solo el código requerido a las máquinas "trabajadoras", sin complicar demasiado todo el proceso. –

Respuesta

3

Esto se trata en la documentación here. Lo esencial es que necesitas descargar algunas secuencias de comandos de inicio y configurar algunas configuraciones. Una vez hecho esto, apical comenzará en el arranque y saldrás corriendo.

+0

Conozco este enlace. Lo que más me interesa es la estructura del proyecto. ¿Cómo estructurar mi aplicación Django y el código de trabajador? ¿Debo crear otra distribución que contenga solo las aplicaciones django necesarias? Por ejemplo, no necesito plantillas y medios para una distribución de trabajadores. Necesito modelos sin embargo. – Tomas

+1

Creo que depende de dónde lo implemente. Para las cosas en las que estoy trabajando, todo se implementa en un sitio web, así que simplemente pongo las tareas en la aplicación (mi proyecto se divide en aplicaciones de grano fino). Luego simplemente despliegue todo en los nodos de trabajador. Es simple y no me preocupa romper algo porque olvidé incluirlo en la distribución del nodo trabajador. –

+0

Supongo que esa es la manera de hacerlo. Simplemente volveré a implementar mi aplicación Django para cada nodo trabajador y luego ejecutaré el trabajador. Gracias, aprecio tu aporte. – Tomas