Si se trata de datos sensibles, no se debe almacenar en código fuente, ya que será verificado en el control de la fuente. Las personas equivocadas (dentro o fuera de su organización) pueden encontrarlo allí. Además, su entorno de desarrollo probablemente utiliza diferentes valores de configuración de su entorno de producción. Si estos valores se almacenan en código, tendrá que ejecutar un código diferente en el desarrollo y la producción, lo cual es una práctica desordenada y mala.
En mis proyectos, poner los datos de configuración del almacén de datos usando esta clase:
from google.appengine.ext import ndb
class Settings(ndb.Model):
name = ndb.StringProperty()
value = ndb.StringProperty()
@staticmethod
def get(name):
NOT_SET_VALUE = "NOT SET"
retval = Settings.query(Settings.name == name).get()
if not retval:
retval = Settings()
retval.name = name
retval.value = NOT_SET_VALUE
retval.put()
if retval.value == NOT_SET_VALUE:
raise Exception(('Setting %s not found in the database. A placeholder ' +
'record has been created. Go to the Developers Console for your app ' +
'in App Engine, look up the Settings record with name=%s and enter ' +
'its value in that record\'s value field.') % (name, name))
return retval.value
su aplicación haría esto para obtener un valor:
AMAZON_KEY = Settings.get('AMAZON_KEY')
Si hay un valor para ese clave en el almacén de datos, lo obtendrá. Si no lo hay, se creará un registro de marcador de posición y se lanzará una excepción. La excepción le recordará que vaya a Developers Console y actualice el registro de marcador de posición.
Creo que esto elimina las conjeturas de la configuración de los valores de configuración. Si no está seguro de los valores de configuración que debe establecer, ejecute el código y se lo indicará.
¿qué tipo de credenciales? – systempuntoout
@systempuntoout Por ejemplo, mis credenciales de Amazon AWS para acceder a S3 –
Si no le gustan sus credenciales simples en su código fuente, la única forma de hacerlo es usar un modelo de configuración en el almacén de datos; de lo contrario, podría almacenar su configuración en algún archivo .ini accediendo a él con [ConfigParser] (http://docs.python.org/library/configparser.html). – systempuntoout