小编Vyt*_*nas的帖子

为什么要使用uWSGI max-requests选项?

我看到这里发布的许多uWSGI配置和我在工作中遇到的现有应用程序的配置也有最大请求,其中填充了从100到1000的值.

在一定数量的请求之后回收您的流程的目的是什么?您是否试图避免内存泄漏,迫使您的应用程序优雅地处理重置?

uwsgi

8
推荐指数
1
解决办法
2496
查看次数

盒子阴影过渡不起作用

我希望鼠标悬停时出现一个框阴影并过渡到它。我有以下课程。阴影出现,但没有过渡。

我在 Chrome 浏览器中查看它,可以看到在悬停和非悬停状态下都在开发人员工具中应用了转换。

.node{
  -webkit-transition: box-shadow .25s linear;
  -moz-transition: box-shadow .25s linear;
  -ms-transition: box-shadow .25s linear;
  -o-transition: box-shadow .25s linear;
  transition: box-shadow .25s linear;
}

.node:hover{
  box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
}
Run Code Online (Sandbox Code Playgroud)

现在事情出现了转折。如果我将转换属性应用于容器上设置的 ID,那么它就可以工作!?使用 ID 与类在元素上设置转换有什么区别?

css transition google-chrome

7
推荐指数
1
解决办法
2万
查看次数

在多个uWSGI进程中使用Flask-SQLAlchemy

我一直在我的Flask应用程序中遇到持久性错误:

OperationalError: (_mysql_exceptions.OperationalError) (2006, 'MySQL server has gone away')
Run Code Online (Sandbox Code Playgroud)

我正在使用mySQL服务器实例和Flask-SQLAlchemy模块.我仔细检查了mySQL实例上的连接的到期时间以及SQLAlchemy配置中的重置时间.没有问题,在mySQL连接到期之前重置连接池.我得出结论,必须有一些问题导致连接关闭,然后该连接的下一个用户窒息.

我正在使用生成四个进程的uWSGI来运行Flask应用程序.如果我切换到单个进程,我无法重现错误.我猜测进程是通过共享连接池相互踩踏的.每当uWSGI分叉进程时,我都会添加以下函数.

from uwsgidecorators import postfork

@postfork
def reset_db_connections():
    db.engine.dispose()
Run Code Online (Sandbox Code Playgroud)

在启动时工作正常,并且当多个请求同时进入时似乎解决了问题.但是,现在当一个进程被重置时,该进程的下一个请求会以类似但不一样的方式爆炸,SQL Server已经消失了.这是数据库的初始设置代码

def configure_db():
    from my_application.models import SomeModel
    db.create_all()

db = SQLAlchemy(app, session_options={'expire_on_commit': False})
configure_db()
Run Code Online (Sandbox Code Playgroud)

数据库的典型用法如下所示:

def save(self):
    try:
        db.session.add(self)
        db.session.commit()
    except Exception, ex:
        app.logger.error("Error saving campaign: %s" % ex)
        db.session.rollback()
Run Code Online (Sandbox Code Playgroud)

读取是以下两种风格之一:

user = db.session.query(User).filter(User.email == email).scalar()
user = User.query.filter(User.email == email).scalar()
Run Code Online (Sandbox Code Playgroud)

我的理解是Flask-SQLAlchemy使用范围会话,因此他们应该在多进程环境中提供一些保护.我需要在fork上重置连接池吗?在分叉时我是否也应该检查实时会话?

更新:

我把fork更改为:

@postfork
def reset_db_connections():
    db.session.close_all()
    db.engine.dispose()
    db.create_scoped_session()
Run Code Online (Sandbox Code Playgroud)

我仍然得到OperationalError,但它只发生在fork中,并且似乎不会干扰请求.堆栈跟踪不包括fork,但不允许我捕获它.

Traceback(最近一次调用最后一次):

在_finalize_fairy fairy._reset(pool)中输入文件"/home/vagrant/env/local/lib/python2.7/site-packages/sqlalchemy/pool.py",第636行

在_reset self._reset_agent.rollback()中输入文件"/home/vagrant/env/local/lib/python2.7/site-packages/sqlalchemy/pool.py",第774行

文件"/home/vagrant/env/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py",第1563行,回滚self._do_rollback()

在/do_rollback self.connection._rollback_impl()中输入文件"/home/vagrant/env/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py",第1601行

文件"/home/vagrant/env/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py",第670行,_rollback_impl …

python mysql sqlalchemy flask flask-sqlalchemy

4
推荐指数
1
解决办法
3219
查看次数

Angular 2.0是否支持Opera Mini

鉴于这篇文章:

http://www.infoq.com/news/2014/03/angular-2-0

Angular 2.0将支持Opera,但未提及Opera Mini.我想这意味着没有支持,但想要一些确认,然后再写下对我们来说本来就是一个很棒的框架.

背景:我正在为东非地区开发,其中Opera Mini可以在一些国家构成超过80%的流量.

opera-mini angular

2
推荐指数
1
解决办法
1167
查看次数