小编Nix*_*arn的帖子

在Django中过期视图缓存?

@cache_page decorator真棒.但对于我的博客,我想在缓存中保留一个页面,直到有人对帖子发表评论.这听起来像个好主意,因为人们很少发表评论,因此将页面保留在memcached中,而没有人评论会很好.我以为某人之前一定有过这个问题?这与每个网址的缓存不同.

所以我想到的解决方案是:

@cache_page( 60 * 15, "blog" );
def blog( request ) ...
Run Code Online (Sandbox Code Playgroud)

然后我会保留用于博客视图的所有缓存密钥的列表,然后让"博客"缓存空间到期.但是我对Django没有超级经验,所以我想知道是否有人知道更好的方法吗?

python django caching

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

REMOTE_ADDR没有使用nginx和龙卷风发送到Django

所以我得到了一个简单的设置,使用nginx进行静态媒体和负载均衡以及龙卷风作为django的webserver(运行4台服务器).我的问题是remote_addr没有传递给django所以我得到一个KeyError:

article.ip = request.META['REMOTE_ADDR']

由于nginx.conf,远程地址通过X-Real-IP(HTTP_X_REAL_IP)发送:

    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect false;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_pass http://frontends;
    }
Run Code Online (Sandbox Code Playgroud)

由于HTTP预先附加到META密钥,因此我不能只执行proxy_set_header remote_addr $ remote_addr.如果没有找到远程地址键,我能做的就是读取X-Real-IP,但我很好奇是否有更智能的解决方案.

谢谢!

django nginx tornado

10
推荐指数
4
解决办法
2万
查看次数

在django中缓存匿名用户

我将如何为匿名用户缓存页面,但是为Django 1.6中的授权用户呈现这些页面?曾经有一个CACHE_MIDDLEWARE_ANONYMOUS_ONLY标志听起来很完美,但已被删除.

我问,因为每个页面都有一个菜单栏,显示登录用户的名字和他/她的个人资料的链接.

这样做的正确方法是什么?必须是一个常见的问题,但我没有找到正确的方式来浏览Django文档.

django caching django-templates django-cache anonymous-users

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

Django应用程序中的datetime.now()变坏了

我部署之后,我遇到了Django应用程序的一些问题.我在ubuntu服务器上使用Apache + mod-wsgi.我重新启动服务器一段时间后,时间变为foobar,大约-10小时就错了.我做了一个Django视图,看起来像:

def servertime():
  return HttpResponse( datetime.now() )
Run Code Online (Sandbox Code Playgroud)

并在我重新启动服务器并检查显示该视图的URL后,它首先看起来没问题.然后在某一时刻,它有时会给出正确的时间,有时则没有,之后它总会给出错误的时间.但服务器时间是核心.

有线索吗?我没有运气就google了.

python apache django datetime mod-wsgi

6
推荐指数
2
解决办法
5696
查看次数

如何从 Google 的标准 App Engine (Python 3.7) 连接到 Redis 实例(内存存储)

我一直在尝试从 App Engine 实例连接到 Redis 实例,但没有成功。我遇到连接超时。

我已经在 app.yaml 中设置了主机和端口:

env_variables:
  REDIS_HOST: '10.0.0.3'
  REDIS_PORT: '6379'
Run Code Online (Sandbox Code Playgroud)

并尝试按照示例中指定的方式进行连接:

redis_host = os.environ.get('REDIS_HOST', 'localhost')
redis_port = int(os.environ.get('REDIS_PORT', 6379))
redis_client = redis.StrictRedis(host=redis_host, port=redis_port)
Run Code Online (Sandbox Code Playgroud)

但它不起作用,一些文档似乎需要 en vpc 访问连接器,但这些仅在 us-cental1 中可用,并且我在 asia-northeast1 中运行了 App Engine 实例和 Memorystore (Redis)。

有人有幸让这个工作吗?一般来说,谷歌非常擅长记录他们的东西,但这对我来说似乎缺乏,实际上没有关于如何让它工作的明确文档。

google-app-engine redis google-cloud-platform google-cloud-memorystore

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

在没有明确定义的结构的情况下插入 BigQuery

我想将任何类型的 JSON 直接插入 BigQuery,但还没有找到任何好的方法?所有方法都假设我有一个定义明确的结构来插入。似乎可以使用旧的已弃用 api,但不能使用新的“cloud.google.com/go/bigquery”包。

我希望 /api/table_name/insert 能够采用任何类型的 json 并将其插入 BigQuery,因为客户端和服务器都知道端点应该转发它的架构。

谢谢

go google-bigquery

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