flask sqlalchemy OperationalError: невозможно открыть файл базы данных - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть API для колбы. есть функция, которая повторяется каждую минуту и ​​обновляет базу данных (sqlite3). Это работает некоторое время, но через некоторое время API перестает отвечать на запросы и не отвечает на запросы. Я думаю, что эта функция делает API безразличным. Я вижу ошибку, упомянутую в названии вопроса. Я что-то здесь не так делаю? Любая помощь приветствуется.

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import threading
app = Flask(__name__)
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
.
.
.
def UpdateStatus():
threading.Timer(60, UpdateStatus).start() 
messages = Message.query.filter((Message.status != 'Seen')).all()
for msg in messages:
    try:
        messageid= msg.messageid
        wamessageid= msg.wamessageid
        timestamp= datetime.now()
        result= driver.get_message_status(wamessageid)
        if result==1:
            status='Sent'
            api_response= 'OK: Message sent'
        elif result==2:
            status= 'Delivered'
            api_response= 'OK: Message Delivered'
        elif result==3:
            status= 'Seen'
            api_response= 'OK: Message Seen'
        message = Message.query.filter_by(messageid = messageid).first()
        if message.status!= status:
            message.status= status
            message.apiresponse= api_response
            if status== 'Delivered':
                message.timestamp_delivered= timestamp
            if status== 'Seen':
                if message.timestamp_delivered is None:
                    message.timestamp_delivered= timestamp
                message.timestamp_seen= timestamp
            db.session.commit()
    except:
        traceback.print_exc()
        continue
...