2014-04-05 9 views
9

Nella mia applicazione vedo alcuni aspetti comuni. Per nessun motivo il mio server rallenta quando ho poco o nessun traffico. Dopo un sacco di tentativi ed errori, ho trovato i miei problemi scomparsi quando ho rimosso il ToOneField sulla mia risorsa TastyPie!Come posso impedire a TastyPie di eseguire query UPDATE senza motivo?

Quello che ho trovato è stato per qualche ragione sconosciuta che TastyPie sta facendo AGGIORNAMENTI DB su questi campi da gioco senza motivo! Che il ... momento!

enter image description here

ho trovato un possibile bug archiviato here, che sostiene di aver risolto il problema di aggiornamento. Ho installato l'ultima versione da pip ma vedo ancora questo problema.

Qualcuno può aiutare?

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) 

Così poco traffico qui ma diventa inutilizzabile. enter image description here enter image description here

+0

L'output di profilo mostrato sopra ... quale strumento lo ha prodotto? – 8one6

+0

@ 8one6 è una nuova reliquia – Prometheus

risposta

2

Non so se questo vi aiuterà, ma ho visto un leggero aumento delle prestazioni con un app ho lavorato durante l'utilizzo select_related nel set di query e full=True nel campo delle risorse.

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

+1

Ciao Farhan grazie per la risposta. Sì, ho letto anche questo e penso che sarebbe d'aiuto, tuttavia, il fatto che Tastypie stia facendo gli AGGIORNAMENTI DB per nessuna buona ragione è la mia preoccupazione principale. – Prometheus

0

È possibile riprodurre l'aggiornamenti di SQL in un ambiente di test?

Se sì, ecco come avrei debug:

modificare l'origine in cui viene eseguito il comando SQL: inserire una dichiarazione che assert alcun aggiornamento viene fatto.

Se lo assert fallisce, si ha lo stacktrace dello strano UPDATE.

Se questo stacktrace non ti aiuta, postalo qui.