小编Kak*_*oin的帖子

如何缓存Django Rest Framework API调用?

我正在使用Memcached作为我的django应用程序的后端.此代码在正常的django查询中工作正常:

def get_myobj():
        cache_key = 'mykey'
        result = cache.get(cache_key, None)
        if not result:
            result = Product.objects.all().filter(draft=False)
            cache.set(cache_key, result)
        return result
Run Code Online (Sandbox Code Playgroud)

但是当与django-rest-framework api调用一起使用时它不起作用:

class ProductListAPIView(generics.ListAPIView):
    def get_queryset(self):
        product_list = Product.objects.all()
        return product_list
    serializer_class = ProductSerializer
Run Code Online (Sandbox Code Playgroud)

我即将尝试提供缓存功能的DRF扩展:

https://github.com/chibisov/drf-extensions

但是github上的构建状态目前正在说"构建失败".

我的应用程序在api调用时非常重读.有没有办法缓存这些电话?

谢谢.

python django memcached caching django-rest-framework

24
推荐指数
1
解决办法
2万
查看次数

如何在请求广告时让AdView"占用"空间?(机器人)

我正在使用适用于Android的Google AdMob Ads SDK 4.0.4

默认情况下,在加载广告之前,AdView将没有大小.如果广告上方或下方有按钮,则可能会出现问题.

如果广告在他们即将点击按钮的确切时刻返回,则用户可能会意外点击该广告.

在旧的admob SDK中,我使用setGoneWithoutAd(false)解决了这个问题.这样,即使广告尚未退回,也会保留空间.

在新的SDK(Google Admob Ads SDK 4.0.4)中,我设法通过使用此快速修复程序执行相同的操作:通过将广告放入宽度为"320dp"且高度为"50dp"的某些布局来保留空间

<LinearLayout 
                        android:layout_width="320dp" 
                        android:layout_height="50dp" > 
                  <com.google.ads.AdView android:id="@+id/adview" 
                         android:layout_width="wrap_content" 
                         android:layout_height="wrap_content" 
                         ads:adUnitId="xxxxxxxxxxx" 
                         ads:adSize="BANNER"/> 
</LinearLayout> 
Run Code Online (Sandbox Code Playgroud)

它有效,但我不确定这是否是一个正确的方法.(我会遇到着名的"没有足够的空间来展示广告!"问题吗?)

总结一个问题:即使在请求广告时,如何(正确)使AdView"占用"空间?

先感谢您!

android admob banner-ads android-layout adview

14
推荐指数
2
解决办法
3191
查看次数

如何限制登录Django中同一帐户的并发用户数

我的网站是一个用Django编写的数字市场网站.

默认情况下,网站上的数字内容(文本,图像,视频)处于"锁定"状态.只有购买这些内容的用户才能查看.

有一个故事,某个用户(谁购买了内容)免费向许多人赠送用户名/密码(例如,Facebook群组中有1000多人).然后,这1,000名用户可以使用该单一用户名/密码登录,并查看"锁定"的数字内容而无需支付一分钱.

是否可以限制同一帐户的并发登录次数?

我发现这个包裹:

https://github.com/pcraston/django-preventconcurrentlogins

但是当有人使用相同的用户名/密码登录时,它的作用是记录以前的用户.这无济于事,因为每个用户每次只需输入用户名/密码即可访问"锁定"内容.

django django-admin django-authentication django-sessions django-users

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

AWS Elastic Beanstalk CLI不会提示创建新密钥对

我正在按照此AWS教程在Amazon Elastic Beanstalk上部署python应用程序:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-common-steps.html#python-common-configuring

我按照指南一直到EB Cli应该提示我创建一个密钥对.但我得到的只是提示键入密钥对的名称.

Do you want to set up SSH for your instances?
(y/n): y

Type a keypair name.
(Default is aws-eb):
You must specify a key type (-t).
Usage: ssh-keygen [options]
Options:
  -b bits     Number of bits in the key to create.
  -c          Change comment in private and public key files.
  -e          Convert OpenSSH to IETF SECSH key file.
  -f filename Filename of the key file.
  -g          Use generic DNS resource record format.
  -i          Convert IETF …
Run Code Online (Sandbox Code Playgroud)

python ssh amazon-web-services amazon-elastic-beanstalk

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

多个Postgres SELECT进程(django GET请求)卡住,导致100%的CPU使用率

我会尽力提供尽可能多的信息.虽然解决方案很棒,但我只想获得如何解决问题的指导.如何查看更多有用的日志文件等.因为我是服务器维护的新手.欢迎任何建议.

这是按时间顺序发生的事情:

  • 我正在运行2个数字海洋飞沫(Ubuntu 14.04 VPS)
  • Droplet#1正在运行django,nginx,gunicorn
  • Droplet#2运行postgres
  • 一切都运行良好一个月,突然postgres droplet CPU使用率飙升至100%
  • 发生这种情况时,您可以看到htop日志.我附上了截图
  • 另一个截图是nginx error.log,你可以看到问题是在15:56:14开始的,我用红框突出显示
  • sudo poweroff Postgres Droplet并重启它并不能解决问题
  • 将postgres droplet恢复到我上次的备份(20小时前)可以解决问题,但它会再次发生.这是2天内的第7次

我会继续做研究并提供更多信息.同时欢迎任何意见.

谢谢.

发生问题时,Postgres服务器htop日志 发生问题时的nginx error.log

2016年5月20日更新

  • 根据e4c5的建议,在Postgres服务器上启用慢速查询日志记录
  • 6小时后,服务器在上午8:07再次冻结(100%CPU使用率).我附上了所有相关的截图
  • 如果在冻结期间尝试访问站点,则浏览器显示502错误
  • sudo service restart postgresql(和gunicorn,Django的服务器上nginx的)不解决冻结(我认为这是一个非常有趣的观点)
  • 但是,将Postgres服务器恢复到我之前的备份(现在为2天)确实可以修复冻结
  • 罪魁祸首Postgres日志消息无法向客户端发送数据:Broken Pipe
  • 罪魁祸首Nginx日志消息是一个简单的django-rest-framework
    api调用,它只返回20个项目(每个项目都有一些外键数据查询)

更新#2 2016年5月20日 当冻结发生时,我尝试按时间顺序执行以下操作(关闭所有内容并逐个转回)

  • sudo service stop postgresql - > cpu使用率降至0-10%
  • sudo service stop gunicorn - > cpu使用率保持在0-10%
  • sudo service stop nginx- > cpu使用率保持在0-10%
  • sudo service restart postgresql - > cpu使用率保持在0-10%
  • sudo …

django postgresql nginx cpu-usage ubuntu-14.04

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

在Django Rest Framework中,如何限制序列化的外键对象的数量

我正在序列化产品模型及其评论.这是我的简单代码:

class ProductSerializer(serializers.HyperlinkedModelSerializer):
    comment_set = CommentSerializer(many=True, read_only=True)
    class Meta:
        model = Product
        fields = [
            'title',
            'comment_set'
        ]


class CommentSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Comment
        fields = [
            'text',
        ]


class Comment(models.Model):
    product = models.ForeignKey(Product, null=True, blank=True, db_index=True)


class Product(models.Model):
    title = models.CharField(max_length=50)
    ...
Run Code Online (Sandbox Code Playgroud)

问题:如果产品有很多评论.例如,500条评论.所有500个都被序列化了.

如何将结果限制为我自己选择的一些,如100条评论?

我在发布之前做了一些研究,但只发现了有关过滤的问题.

谢谢.

django serialization foreign-keys foreign-key-relationship django-rest-framework

2
推荐指数
3
解决办法
1686
查看次数