小编Leo*_*rd2的帖子

在Django中使用会话

我在Django中使用会话来存储登录用户信息以及一些其他信息.我一直在浏览Django会话网站,但仍然有一些问题.

来自Django网站:

默认情况下,Django将会话存储在您的数据库中(使用该模型 django.contrib.sessions.models.Session).虽然这很方便,但在某些设置中,将会话数据存储在其他地方的速度更快,因此可以将Django配置为在文件系统或缓存中存储会话数据.

也:

对于持久性缓存数据,请设置 SESSION_ENGINEdjango.contrib.sessions.backends.cached_db.这使用直写高速缓存 - 每次写入高速缓存也将写入数据库.如果数据尚未存在于缓存中,则会话只读使用数据库.

有一个很好的经验法则可以使用哪一个?cached_db似乎总是一个更好的选择,因为最好的情况是,数据在缓存中,最坏的情况是它在数据库中无论如何都是如此.一个缺点是我必须设置memcached.

默认情况下,SESSION_EXPIRE_AT_BROWSER_CLOSE设置为False,这意味着会话cookie将存储在用户的浏览器中SESSION_COOKIE_AGE.如果您不希望每次打开浏览器时都必须登录,请使用此选项.

是否可以同时使用,会话在浏览器关闭时到期并给出年龄?

如果value是一个整数,则会话将在该多次不活动后过期.例如,调用 request.session.set_expiry(300)会使会话在5分钟后到期.

什么被认为是"不活跃"?

如果您正在使用数据库后端,请注意会话数据可能会累积在django_session 数据库表中,而Django不会提供自动清除.因此,您的工作是定期清除过期的会话.

这意味着,即使会话过期,我的数据库中仍有记录.究竟哪里会把代码放到"清除数据库"?我觉得你需要一个单独的线程来每隔一段时间(每小时?)浏览数据库并删除任何过期的会话.

python django session django-sessions

6
推荐指数
1
解决办法
3542
查看次数

如何管理从多个节拍到集中式Logstash的输入

我想使用Elastic Stack进行日志聚合以从10台计算机中获取日志。我希望在10台计算机上安装Filebeat,并从每台计算机上获取日志,然后将其发送到安装在单独计算机上的集中式Logstash服务器。在单独的计算机上,安装了Logstash Elasticsearch&Kibana。我需要Logstash,因为我想在使用Beats收集日志后进行数据的处理和解析。

按照这种体系结构,我面临一些标识和解析日志的问题。如何使Logstash标识一次从多个Beats服务器收集日志?我可以在logstash-beats插件中指定多个主机,以便Logstash一次解析10台计算机上的所有日志吗?

我是否应该在所有10台机器中定义单独的document_type作为Filebeat Configuration的一部分,以后可以在Logstash中利用它,以便在过滤器插件中定义多种类型(使用通配符-tomcat *)。

单机设置的示例Filebeat配置:-

################### Filebeat Configuration Example #########################
############################# Filebeat ####################################
filebeat:
  prospectors:
    -
      paths:
        - /location/to/file/catalina.out
      document_type: tomcat1
      scan_frequency: 5s
      input_type: log

output:
  logstash:
    hosts: ["<host-of-the-machine-on-which-logstash-is-installed>:5044"]
  console:
    pretty: true
  shipper:
  logging:
  files:
    rotateeverybytes: 10485760 # = 10MB
Run Code Online (Sandbox Code Playgroud)

这种设置类型将在所有10台机器上完成,其中document_type的值仅会更改。

单机的Logstash示例配置:-

input {
    beats   {
        host => "ip/of/machine/1"
        port => 5044
    }
}
filter {
    ........................
    ........................
    ........................
}
output{
    elasticsearch {
        hosts => "localhost:9200"
        index => "logs-%{+YYYY.MM.dd}"
    }
    stdout { codec => rubydebug }
} …
Run Code Online (Sandbox Code Playgroud)

elasticsearch logstash kibana-4 logstash-configuration filebeat

5
推荐指数
1
解决办法
5541
查看次数