如何在没有任何理由的情况下阻止TastyPie执行UPDATE查询?

时间:2014-04-05 21:34:00

标签: python django tastypie

我在应用程序中看到了一些常见的事情。当我很少或没有流量时,我的服务器无缘无故地放慢速度。经过大量的反复试验后,当我删除TastyPie资源上的ToOneField时,我发现问题就消失了!

我发现的是由于某种未知的原因,TastyPie正在这些ToOneFields上进行 DB UPDATES ,这是没有充分理由的!什么......时刻!

enter image description here

我发现可能存在错误here,声称修复了更新问题。我已经安装了pip的最新版本,但仍然看到了这个问题。

有人可以帮忙吗?

class IncentiveResource(ModelResource):
    product_introducer = fields.ToOneField(ProductResource, 'referrer_product', full=True)
    product_friend = fields.ToOneField(ProductResource, 'referee_product', full=True)

    class Meta:
        queryset = Incentive.objects.all().order_by('-date_created')
        resource_name = 'incentive'
        allowed_methods = ['get']
        authentication = MultiAuthentication(ClientAuthentication(), ApiKeyAuthentication())
        authorization = Authorization()
        filtering = {
            "active": ALL,
        }
        always_return_data = True
        cache = SimpleCache(cache_name='resources', timeout=10)

这里的流量很少,但变得无法使用。 enter image description here enter image description here

2 个答案:

答案 0 :(得分:2)

我不知道这是否会对您有所帮助,但我在查询集中使用select_related并在full=True中使用的应用中发现性能略有提升资源领域。

尝试queryset = Incentive.objects.select_related('product_introducer', 'product_friend').all().order_by('-date_created')

答案 1 :(得分:0)

你能在测试环境中重现sql UPDATE吗?

如果是,请按以下方式调试:

修改执行sql命令的源:插入一个没有更新完成的assert语句。

如果assert失败,则表示存在奇怪更新的堆栈跟踪。

如果此堆栈跟踪对您没有帮助,请在此处发布。