我在应用程序中看到了一些常见的事情。当我很少或没有流量时,我的服务器无缘无故地放慢速度。经过大量的反复试验后,当我删除TastyPie资源上的ToOneField
时,我发现问题就消失了!
我发现的是由于某种未知的原因,TastyPie正在这些ToOneFields上进行 DB UPDATES ,这是没有充分理由的!什么......时刻!
我发现可能存在错误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)
这里的流量很少,但变得无法使用。
答案 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
失败,则表示存在奇怪更新的堆栈跟踪。
如果此堆栈跟踪对您没有帮助,请在此处发布。