Pracuję z sygnałami Django, ale wydaje się, że są odbierane dwa razy, nawet jeśli są emitowane jeden raz. Oto kod pracuję z (jest to prosty wrapper użyć Uploadify z Django) ...Sygnał Django emitujący raz, odebrany dwukrotnie - Dlaczego?
# Signal-emitting code... emits whenever a file upload is received
# ----------------------------------------------------------------
upload_recieved = django.dispatch.Signal(providing_args=['data'])
def upload(request, *args, **kwargs):
if request.method == 'POST':
if request.FILES:
print 'sending signal'
upload_recieved.send(sender='uploadify', data=request.FILES['Filedata'])
return HttpResponse('True')
# Signal-receiving code...
# ----------------------------------------------------------------
def upload_received_handler(sender, data, **kwargs):
print 'upload received handler'
print 'connecting signal'
upload_recieved.connect(upload_received_handler)
(Właśnie zauważyłem mój sygnał jest orkisz źle)
Jestem pewien, że zauważyłem tam instrukcje drukowania. Na konsoli, to co to jest pokazane:
(server starts)
connecting signal
...
sending signal
upload received handler
upload received handler # << == where is this 2nd one coming from?
127.0.0.1 - - [25/Sep/2009 07:28:22] "POST /uploadify/upload/ HTTP/1.1" 200 -
(też dziwne jest dlaczego Django zgłoś post Strona po sygnały są opalane?)
Jak, dlaczego linia dziennika POST przychodzi później, wierzę serwer czeka, aż żądanie zostanie zakończone, aby go zarejestrować - tylko wtedy będzie wiedział, czy wystąpił błąd serwera, który skutkuje kodem statusu 500 w stosunku do pomyślnego żądania, jak długo trwało żądanie, jeśli format dziennika zawiera to, itd. – dcrosta