telebotter / mensabot

🇩🇪 Ein Telegrambot, der dich über das Mensaessen Informiert. Einstellbare Infouhrzeit und Alarme für persönliche Lieblingsessen. Basiert auf Infos aus dem OpenMensa.org Projekt.
https://telebotter.sarbot.de/mensabot
2 stars 0 forks source link

Database Locked #35

Closed lukruh closed 6 years ago

lukruh commented 6 years ago

Nach stoppen (ctrl-c) und restart hat scheinbar der aboservice nicht mehr funktioniert (keine antwort auf /abo/..) aus den logs hab ich folgenden fehler als relevant befunden: (sqlite3.OperationalError) database is locked Das passiert dann wenn andere Processe schreibend auf die sql datei zugreifen, dafür fallen mir 2 Gründe ein:

  1. Nach dem stoppen des scripts sind noch irgendwelche hintergrundprozesse am laufen gewesen woher auch immer...

  2. An irgendeinerstelle im code fehlt ein commit, sodass die funktion (unter bestimmten umständen) im schreibmodus hängen bleibt, was daraufhin den abobefehl blokiert (der ebenfalls in die db datei schreiben will)

nach killall, kurz warten und neustart, scheint er wieder normal zu laufen..

lukruh commented 6 years ago

seit dem der bot als daemon läuft ist der bug noch nicht wieder aufgetreten, sollte das die nächsten tage so bleiben, ist hier close

hendricokakiko commented 6 years ago

fehler ist auch mit dem deamon wieder aufgetreten

hendricokakiko commented 6 years ago

fehler ist auch bei der aktuellen version aufgetreten. wenn der look for fav_food job auf ein intervall von 5 s gestellt wird dann kommt recht schnell der (database locked fehler und beliebig viele weitere, wobei zusehens funktionen ausfallen, zb wenn die fav_food liste leer ist, ich den bot starte und dann grünkohl eingebe (morgen gibts grünkohl)

hendricokakiko commented 6 years ago

problem hoffentlich gelöst indem beim repeating job look_for_fav_food_job die user session add und comitted wurde. zur not müsste die scoped session geclosed werden http://docs.sqlalchemy.org/en/latest/orm/contextual.html

lukruh commented 6 years ago

Sieht gut aus ich close vorerst