我正在开发一个利用Server-Sent-Events的项目,并且遇到了一些有趣的事情:Chrome和Firefox之间的连接丢失处理方式不同.
在Chrome 35或Opera 22上,如果您丢失了与服务器的连接,它将每隔几秒尝试无限期重新连接,直到成功为止.另一方面,在Firefox 30上,它只会尝试一次,然后您必须刷新页面或处理引发的错误事件并手动重新连接.
我更喜欢Chrome或Opera的方式,但是阅读http://www.w3.org/TR/2012/WD-eventsource-20120426/#processing-model,似乎一旦EventSource尝试重新连接并失败由于网络错误或其他原因,它不应重试连接.但不确定我是否正确理解规范.
我开始要求用户使用Firefox,主要是因为你不能在Chrome上打开同一个URL的事件流,但是这个新发现可能更多的是一个问题.虽然,如果Firefox的行为符合规范,那么我不妨以某种方式解决它.
编辑:
我现在要继续以Firefox为目标.这就是我处理重新连接的方式:
var es = null;
function initES() {
if (es == null || es.readyState == 2) { // this is probably not necessary.
es = new EventSource('/push');
es.onerror = function(e) {
if (es.readyState == 2) {
setTimeout(initES, 5000);
}
};
//all event listeners should go here.
}
}
initES();
Run Code Online (Sandbox Code Playgroud) 在生产阶段,我很可能会考虑迁移功能(有版本等),但是当我处于开发阶段时,我想知道处理models.py中任何更改的最常用方法是什么?该应用程序使用SQLAlchemy进行设置.
我对python web框架比较陌生.我的背景是PHP,最近我完成了一个使用Symfony 1.4的项目,我通常可以这样做symfony doctrine:build --all --and-load,它将负责重建模型类,重新创建数据库,以及加载数据夹具等等.
目前我正在做的只是删除数据库,重新创建它,并使用贴纸来提供应用程序,这需要重新创建表等.
这可能是一个菜鸟问题,但你去了.
我有一个绑定到集合的数据网格.我已将以下rowstyle应用于datagrid:
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Status}" Value="Down">
<Setter Property="Background" Value="Red" />
<Setter Property="Foreground" Value="White" />
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Status}" Value="Down" />
<Condition Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsSelected}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Green" />
<Setter Property="Foreground" Value="White" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
Run Code Online (Sandbox Code Playgroud)
数据触发器正在工作,但不是多数据触发器.失败的条件是检查datagridrow上的IsSelected为true的条件.如果我改变它所以它使用一个总是返回true的valueconverter我会看到行为绿色.
基本上我希望数据对象将status属性设置为down的行为红色,但是当我选择那些行时,它们需要是绿色(或实际上是黑色的)而不是默认的蓝色.
background ×1
datagrid ×1
datatrigger ×1
firefox ×1
javascript ×1
pylons ×1
pyramid ×1
sqlalchemy ×1
triggers ×1
wpf ×1