如何配置NGINX以在服务器启动时启动cacheRefresher程序

时间:2016-03-18 07:00:18

标签: python nginx uwsgi

有什么办法可以配置一个python模块作为启动的一部分被调用,当NGINX服务器启动时。

python模块的作用是查询数据库并将其缓存在内存数据库中,如redis。它还必须每隔5分钟定期刷新一次缓存。

我使用NGINX作为反向代理服务器,使用uWSGI作为应用服务器。缓存的想法是将应用程序服务器响应时间从毫秒减少到毫秒

1 个答案:

答案 0 :(得分:1)

最初你的问题听起来像是一个nginx缓存代理......

https://www.nginx.com/resources/wiki/start/topics/examples/reverseproxycachingexample/

像Redis一样预加载应用程序缓存是一个不同的问题。缓存中的内容和格式很难概括,即你可能想要缓存html片段,我可能想要从API缓存JSON数据,其他人可能想要从数据库中缓存查询。

就个人而言,如果您正在处理请求,而您的应用程序使用缓存,则使用该应用程序预加载缓存。我用过Squid的一个具体例子,但这也适用于nginx。

  1. 解析日志并获取最常用URL的统计信息。这是你的热图。
  2. 启动Nginx。
  3. 点击这些网址。
  4. 这会将最近使用的项目加载到缓存中。我也使用了以下方法,即从数据库获取id然后点击app ...(原谅我的python)

    import grequests
    
    base_url = "http://localhost:70/?id="
    big_list = ['1', '2', '3', '4', '5']
    
    for i in range(len(big_list)):
          big_list[i] = base_url + big_list[i]
    
    rs = (grequests.get(u) for u in big_list)
    grequests.map(rs)
    

    这循环遍历id列表并点击URL。该应用程序然后缓存它所需的一切。

    您可以使用上述任意组合,即我只需要加载所需的内容,以避免缓存很少请求的垃圾。

    旧答案如下......

    你的问题读得不是很好,但是每当我听到nginx并缓存它时,通常都是关于如何配置它来缓存页面。这里有更多细节......

    https://serversforhackers.com/nginx-caching/

    在这里查看带有超时的nginx缓存,即查找

    http://nginx.org/en/docs/http/ngx_http_proxy_module.html

    在该页面上查找 proxy_cache_valid