Amazon + Django tiene errores de entrada/salida cada 12 horas [errno 5]

Problema

recientemente he configurado y desplegado una instancia Amazon EC2 para el proyecto deploy my Django.
Estoy interactuando con la aplicación a través del navegador cuando encuentro los siguientes errores en mi navegador:
errno 5 input/output error django
enter image description here
Este error está realmente relacionado con algunas de las características de mi aplicación
Environment:

Request Method: GET
Request URL: http://localhost:8000/accounts/profile/

Django Version: 1.9
Python Version: 3.4.3
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'crispy_forms',
 'django_extensions',
 'storages',
 'userprofile']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "/home/ubuntu/.virtualenvs/nrb_dev/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
  149.                     response = self.process_exception_by_middleware(e, request)

File "/home/ubuntu/.virtualenvs/nrb_dev/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
  147.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/home/ubuntu/.virtualenvs/nrb_dev/lib/python3.4/site-packages/django/views/generic/base.py" in view
  68.             return self.dispatch(request, *args, **kwargs)

File "/home/ubuntu/.virtualenvs/nrb_dev/lib/python3.4/site-packages/django/utils/decorators.py" in _wrapper
  67.             return bound_func(*args, **kwargs)

File "/home/ubuntu/.virtualenvs/nrb_dev/lib/python3.4/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  23.                 return view_func(request, *args, **kwargs)

File "/home/ubuntu/.virtualenvs/nrb_dev/lib/python3.4/site-packages/django/utils/decorators.py" in bound_func
  63.                 return func.__get__(self, type(self))(*args2, **kwargs2)

File "/home/ubuntu/workspace/neurorehabilitation-system/userprofile/mixins.py" in dispatch
  7.         return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)

File "/home/ubuntu/.virtualenvs/nrb_dev/lib/python3.4/site-packages/django/views/generic/base.py" in dispatch
  88.         return handler(request, *args, **kwargs)

File "/home/ubuntu/.virtualenvs/nrb_dev/lib/python3.4/site-packages/django/views/generic/base.py" in get
  157.         context = self.get_context_data(**kwargs)

File "/home/ubuntu/workspace/neurorehabilitation-system/userprofile/views.py" in get_context_data
  50.             print (user.is_physiotherapist)

Exception Type: OSError at /accounts/profile/
Exception Value: [Errno 5] Input/output error
Al final de la línea 50, se hace referencia a una función get_context_data() en la vista basada en clases heredada de TemplateView CBV
Pero en mi consola, el servidor necesita ser reiniciado, y cuando lo hago, el error se resuelve mágicamente.
Busqué este error y encontré este boleto reportado https://code.djangoproject.com/ticket/23284
Este informe es similar a mi error...
Además, tuve este error ayer, reinicié el servidor y hoy.
¿Hay algún problema con la infraestructura EC2 de django (no lo creo), o el problema es más un aspecto de mi aplicación?
No creo que la función get_context_data() de mi aplicación sea un problem a...

Detalles de la solución

he estado explorando la raíz de este error en mi código
Tengo dos errores de novato:
Sentencia
  • print producción
  • En el rastreo mostrado en mi pregunta anterior, tengo una declaración print en la función get_context_data():
    File "/home/ubuntu/workspace/neurorehabilitation-system/userprofile/views.py" in get_context_data
      50.             print (user.is_physiotherapist)
    
    Es posible que cada vez que ejecute esta instrucción de impresión, el proceso intente escribir el archivo de salida estándar en mi instancia de máquina Amazon EC2.
    Eliminé la instrucción de impresión de esta línea, recuperé los cambios en mi servidor de producción a través de Git, y reinicié el servidor gunicorn, todo perfectamente.
  • mi DEBUG=True está produciendo
  • Tengo los siguientes archivos de configuración:
    settings/
        base.py # --- without DEBUG
        development.py # --- DEBUG=True
        testing.py # --- DEBUG=True
        production.py # --- DEBUG=False
        staging.py # --- DEBUG=False  
    
    Todos los archivos (development.py, testing.py, production.py, staging.py) son heredados de base.pyPero no sé cómo hacerlo en mi ejemplo EC2, la producción. Si ejecuta Py, hereda todo de la base. Py y reescribir el error a false.
    He estado explorando la posibilidad de cambiar su valor (verdadero o falso) basado en el nombre del host que ejecuta mi aplicación, such as shown in this post.
    En mi ejemplo, este es el valor de mi nombre de host
    (nrb_dev)[email protected]:~$ python
    Python 3.4.3 (default, Oct 14 2015, 20:28:29) 
    [GCC 4.8.4] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import socket
    >>> a=socket.gethostname()
    >>> a
    'ip-172-31-27-249'
    >>> 
    >>> if a != 'ip-172-31-27-249':
    ...     DEBUG = print ('Caleno juiciocito')
    ... 
    >>> DEBUG
    True
    >>> 
    
    Eso significa, poner en mi base. Tenga en cuenta lo siguiente:
    import socket
    
    if socket.gethostname() == 'ip-172-31-27-249':
        DEBUG = False
    else:
        DEBUG = True
    
    Aunque he codificado el nombre del host del servidor de producción en mi código.
    Esto significa que cuando queremos desplegar mi proyecto en una máquina con otro nombre de host, voy a A a ñadir un punto modificado manualmente
    ¿Es una buena práctica?
    Otra opción que creo que es la más apropiada es fijar el valor de la variable de entorno DJANGO_SETTINGS_MODULEEn mi caso particular, utilizo virtualenvwrapper, y tengo dos entornos virtuales:nrb_dev para mi entorno de desarrollonrb_test para mi entorno de prueba.
    Tengo algunos ganchos que se activan cuando el entorno virtual está activo
    En nrb_dev, en $VIRTUAL_ENV/bin/postactivate, tengo:
    export DJANGO_SETTINGS_MODULE="neurorehabilitation.settings.development"
    
    Del mismo modo, en nrb_test, en $VIRTUAL_ENV/bin/postactivate, tengo:
    export DJANGO_SETTINGS_MODULE="neurorehabilitation.settings.testing"
    
    Esto significa que en mi máquina de producción Amazon EC2, debería cambiar el gancho en $VIRTUAL_ENV/bin/postactivate para seleccionar settings/production.py de esta manera:
    export DJANGO_SETTINGS_MODULE="neurorehabilitation.settings.production"
    
    Para probar el efecto y el tiempo, Imprimí el valor DEBUG en settings/production.py
    from .base import *
    
    # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = False
    print (DEBUG) # just for now.
    
    Cuando inicié el servidor demonio gunicorn, pude ver que el valor de depuración se establece en False
    (nrb_dev)[email protected]:~/workspace/neurorehabilitation-system$ gunicorn -c neurorehabilitation/gunicorn_config.py neurorehabilitation.wsgi 
    [2016-01-08 00:26:15 +0000] [6691] [INFO] Starting gunicorn 19.4.5
    [2016-01-08 00:26:15 +0000] [6691] [INFO] Listening at: http://127.0.0.1:8000 (6691)
    [2016-01-08 00:26:15 +0000] [6691] [INFO] Using worker: sync
    [2016-01-08 00:26:15 +0000] [6694] [INFO] Booting worker with pid: 6694
    False
    ^C[2016-01-08 00:26:19 +0000] [6691] [INFO] Handling signal: int
    
    Notas adicionales
    Puedo encontrar eventos de registro y otros contenidos para mi aplicación en Django Logging functionality.
    Debería explorar supervisor service para gestionar mejor el proceso de producción de gunicorn.
    Otros recursos del supervisor:
    How to install and manage supervisor in Ubuntu
    Setting up Django with Nginx, Gunicorn, virtualenv, supervisor and PostgreSQL