Despliegue web.py para el backend de la aplicación iOS

Actualmente estoy desarrollando una aplicación iOS que necesita un servidor para extraer datos. He implementado el backend usando Python, web.py y pymongo.

Desplegué todo en una instancia de EC2, asigné una IP elástica a la instancia a la que llaman los dispositivos iOS para acceder al backend y ejecuté la aplicación a través de SSH haciendo lo siguiente:

nohup python main.py & 

Todo funciona bien (un par de docenas de usuarios al día, con potencial para crecer; los datos transferidos rara vez son más de unos pocos kilobytes), pero me pregunto si esta es la forma correcta de hacer las cosas.

Por ejemplo, en el sitio web web.py, explican las maneras de usar web.py con Apache, lightppd, etc .; ¿Son estos casos solo especiales, o debo implementar mi backend usando uno de esos servidores con todas las funciones?

Absolutamente usaría un servidor web completo en lugar de uno integrado en web.py, aunque debería estar bien por ahora si el tráfico sigue siendo bajo. Creo que el que está integrado en web.py se supone que se utiliza para la depuración, en lugar de la producción.

Es sobre todo una cuestión de preferencia cuál de esos servidores usa, pero me gusta Nginx con uWSGI .

FWIW, usamos CherryPy (el servidor web “integrado en” web.py) detrás de nginx para servir la mayoría del HTML en Oyster.com – nginx divide el tráfico en 2 o 3 servidores web, cada uno de los cuales ejecuta 4 procesos Python, y podemos Maneja fácilmente 100s de peticiones por segundo.

Sin embargo, utilizamos una red de entrega de contenido (CDN) para nuestros recursos estáticos como imágenes y CSS.