Flask应用程序无权访问更新的数据库信息/ Flask sqlalchemy无法删除会话

时间:2019-09-26 13:51:11

标签: mysql nginx flask flask-sqlalchemy gunicorn

我正在开发我的第一个Web应用程序(Flask),并已进行到我正在部署它的地步。对于db和orm,应用程序使用mysql,sqlalchemy,flask-sqlalchemy。为了进行部署,我使用了gunicorn和nginx。

全部设置完毕,我可以访问外部服务器上的站点。我遇到的问题是,当输入数据然后搜索它时,应用程序将无法一致地访问它(即,当新用户注册时,即使他们的信息在mysql db中,他们也无法登录)。始终如一地,我的意思是,每刷新5次搜索,我就可以看到输入的数据中的1个。需要明确的是,信息正在传递到数据库,服务器正在返回闪存消息,说明数据已成功提交。

此外,我正在测试删除Cookie时提交的表单。不出所料,它给了我一个CSRF错误。但是,此后,该应用程序将不会刷新cookie。

一旦停止使用并重启了枪支,这两个问题都解决了。

我怀疑它是应用程序配置问题,但尚未弄清楚是什么原因引起的。从Flask开发服务器运行应用程序时,不会出现问题。

编辑:为了验证这不是外部服务器问题,我在本地运行了“ gunicorn”。再一次,我遇到了同样的问题。但是,当我将工作人员的数量从4减少到1时,问题消失了。当我将工作人员的数量从1增加到2时,不一致再次出现。根据所使用的工作程序,应用程序是否能够正确访问数据库。

看着flask-sqlalchemy,当与开发服务器一起运行时,我看到它在每个请求结束时都正确地删除了数据库会话。但是,当我带着枪眼跑时,是不是这样做了?是否有人对造成这种情况的原因有任何想法?

下面是配置文件的代码

**Flask config.py**    
class Config(object):
    SECRET_KEY = os.environ.get("SECRET_KEY")

    #sql alchemy info
    SQLALCHEMY_DATABASE_URI =  os.environ.get('DATABASE_URL')
    SQLALCHEMY_TRACK_MODIFICATIONS = False


class ProductionConfig(Config):
    DEBUG = False
    TESTING = False
    REMEMBER_COOKIE_HTTPONLY = True
    SESSION_PROTECTION = "strong"
    SESSION_COOKIE_SECURE = True
    REMEMBER_COOKIE_SECURE = True

class DevelopmentConfig(Config):
    DEBUG = True
    TESTING = False


**Supervisor gunicorn configuration**
[program:Ask]
command=/home/ubuntu/Ask/venv/bin/gunicorn -b localhost:8000 -w 4 Ask:app
directory=/home/ubuntu/Ask
user=ubuntu
autostart=true
autorestar=true
stopasgroup=true
killasgroup=true

先谢谢了。请让我知道是否还有其他有用的信息。

0 个答案:

没有答案