Tutti, ho un problema con i segnali django.Perché posso accedere a un oggetto durante il segnale post_save, ma non quando faccio scattare il codice all'interno di quel segnale che lo chiama su un altro processo
Ho un modello Nel tentativo di accelerare la reattività dei carichi di pagina, sto scaricando alcune elaborazioni intensive che devono essere eseguite, tramite una chiamata a un secondo server web localhost in esecuzione, entrambi che utilizzano lo stesso database . Sto vedendo un comportamento in cui il processo chiamante può recuperare l'oggetto, ma il processo chiamato non può. Entrambe le porte 80 e port [port] stanno puntando ai processi django che scorrono dallo stesso database.
In models.py
class A(models.Model):
stuff...
def trigger_on_post_save(sender, instance, create, raw, **keywords):
#This line works
A.objects.get(pk=instance.pk)
#then we call this
urlopen(r'http://127.0.0.1:[port]' +
reverse(some_view_url, args(instance_pk)).read()
post_save.connect(trigger_on_post_save, A)
In views.py
def some_view_function(request, a_pk):
#This line raises an object_not_found exception
A.objects.get(pk=a_pk)
Inoltre, dopo che la chiamata urlopen solleva un'eccezione, l'oggetto non esiste nel database. Ho capito che post_save è stato chiamato dopo che l'oggetto è stato salvato e scritto nel database. È sbagliato?
Non dovrebbe essere: reverse (some_view_url, args (instance.pk)) .read()? –