我有一个包含以下数据的表:
> head(sweet)
interval urgency success
1 3138 761 1
2 3210 2189 1
3 3243 1256 1
4 8776 823 1
5 3094 1405 1
6 3137 1062 1
Run Code Online (Sandbox Code Playgroud)
成功取值为 0 和 1。我正在寻找不同紧迫性值的成功率,因此我绘制了这样的直方图:
ggplot(sweet, aes(x=urgency, fill=success==0)) + geom_histogram(position='fill')
Run Code Online (Sandbox Code Playgroud)

现在我想看看紧急和间隔组合的成功率,但类似的方法无济于事:
ggplot(sweet, aes(x=urgency, y=interval, fill=success==0)) + geom_bin2d()
Run Code Online (Sandbox Code Playgroud)

有没有办法让填充连续显示成功/失败的比率,而不是在 2d bin plot 上显示无用的二进制值?
我使用 Celery 3.0.15 和 MongoDB 2.4.4 副本集作为后端(pymongo 版本 2.5.1)。我还使用相同的副本集作为主应用程序数据存储:
CELERY_CONFIG = {
'BROKER_URL': 'mongodb://localhost:27017,localhost:27018,localhost:27019/',
'BROKER_TRANSPORT_OPTIONS': {
'replicaSet': 'test'
}
}
...
conn = MongoReplicaSetClient(
'localhost:27017,localhost:27018,localhost:27019',
replicaSet='test'
)
Run Code Online (Sandbox Code Playgroud)
我可以启动一些工作程序并使用此conn实例从 celery 任务中的代码访问数据库。
如果Mongo Primary关闭并重新选举,Celery Worker会自动重新连接到新配置。但是,无论我进行了多少次重试以及等待多长时间,所有后续查询都会conn返回AutoReconnect异常。
分离代理和主数据库的副本集并不能解决问题:worker 仍然正常重新连接,但我无法从使用相同 MongoReplicaSetClient 的任务访问 mongo。
更新
解决问题conn.refresh()后手动调用AutoReconnect。MonitorThread在这种情况下似乎无法正常工作。