Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

253
Vistas
¿Cómo guardar y editar datos de representación del servidor?

Estoy usando el servidor Flask con python.

Tengo un entero pics_to_show . Cada vez que se recibe una solicitud, el usuario recibe el entero pics_to_show . Y pics_to_show se reduce en 1. pics_to_show es un número entero que se comparte con todos los usuarios del sitio web. Podría hacer una base de datos para guardarla, pero quiero algo más simple y flexible. ¿Hay alguna OTRA forma de guardar este número entero?

Hice una clase que guarda tales variables en un archivo JSON.

 class GlobalSate: def __init__(self, path_to_file): self.path = path_to_file try: open(path_to_file) except FileNotFoundError: f = open(path_to_file, 'x') f.write('{}') def __getitem__(self, key): file = self.load_file() data = json.loads(file.read()) return data[key] def __setitem__(self, key, value): file = self.load_file() data = json.loads(file.read()) data[key] = value json.dump(data, open(self.path, 'w+'), indent=4) def load_file(self): return open(self.path, 'r+')

La clase está demasiado simplificada, por supuesto. Inicializo una instancia en __init__.py y la importo a todos los archivos de rutas (estoy usando BluePrints).

Mi aplicación está encadenada, por lo que es posible que esta clase no funcione... Ya que varios usuarios están editando los datos al mismo tiempo. ¿Alguien tiene otra solución?

Nota: la variable g no funcionaría, ya que los datos se comparten entre usuarios, no entre solicitudes .

Además, ¿qué pasa si quiero incrementar esa variable cada semana? ¿Sería seguro ejecutar un script de python separado para realizar un seguimiento de la fecha o verificar la fecha en cada solicitud al servidor?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Definitivamente terminará con un estado inconsistente, sin un mecanismo de bloqueo entre lecturas y escrituras, tendrá condiciones de carrera. por lo que perderá algunos incrementos.

Además, no está cerrando el archivo abierto, si lo hace suficientes veces, la aplicación se bloqueará.

También un buen consejo es que no desea escribir un software de administración de estado (base de datos), es muy, muy difícil hacerlo bien.

Creo que en su situación, la mejor solución es usar sqlite, ya que es una biblioteca a la que llama desde su aplicación, no hay un servidor adicional.

"Podría hacer una base de datos para guardarla, pero quiero algo más simple y flexible"

En una aplicación de subprocesos múltiples, no puede ir más simple que sqlite (si desea que su aplicación sea correcta).

Si no te gusta SQL, hay algunas opciones más simples:

  1. zodb http://www.zodb.org/en/latest/guide/transactions-and-threading.html
  2. pikleDB https://github.com/patx/pickledb
  3. python shelve pero necesitará usar bloqueos del sistema de archivos
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda