2010-07-30 8 views
5

Nunca he escrito ningún código que use subprocesos.¿Cuándo enhebrar?

Tengo una aplicación web que acepta una solicitud POST y crea una imagen basada en los datos en el cuerpo de la solicitud.

¿Me gustaría derivar un hilo para la creación de la imagen, para evitar que el servidor se cuelgue hasta que se cree la imagen? ¿Es este un uso apropiado, o simplemente una solución que busca un problema?

Corrija cualquier malentendido que pueda tener.

+0

Enhebrar en Python es una bestia completamente diferente. –

+0

Así que he oído. No estoy seguro de entender por qué el GIL está mal visto. De cualquier manera, me pareció relevante etiquetar la pregunta con Python porque ese es el idioma que estoy usando. –

+0

El multiprocesamiento es mejor que el subprocesamiento en Python. – nmichaels

Respuesta

2

El enfoque habitual para manejar las solicitudes HTTP de forma síncrona es generar (o reutilizar uno en el grupo) un hilo nuevo para cada solicitud tan pronto como se produzca.

Sin embargo, los hilos de python no son muy buenos para HTTP, debido a GIL y algunas llamadas de E/S y otras que bloquean la aplicación completa, incluidos otros subprocesos.

Debe considerar el módulo de multiprocesamiento para este uso. Genere algunos procesos de trabajo y luego pídales que los procese.

3

En lugar de pensar en manejar esto por hilos o incluso procesos, considere usar un administrador de tareas distribuidas como Celery para administrar este tipo de cosas.

+0

¿Qué me compra esto? –

+0

@mm_food, según tengo entendido, le permite usar varios hosts para computación a la vez, además maneja la paralelización usando multiprocesamiento por sí mismo. –

+0

Revisé el sitio y vi que Celery maneja tareas tipo cron, que es algo que me gustaría usar para el mismo proyecto. Gracias por la sugerencia. –

Cuestiones relacionadas