Estoy trabajando con señales de Django, pero parecen ser recibidas dos veces, incluso si se emiten una vez. Aquí está el código que estoy trabajando (es un contenedor simple de usar Uploadify con Django) ...Señal de Django emitiendo una vez, recibida dos veces - ¿Por qué?
# 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)
(me he dado cuenta de mi señal está mal escrito)
Estoy seguro de que notado las declaraciones impresas allí. En la consola, esto es lo que se está mostrando:
(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 -
(también extraño es por qué informar Django la publicación de la página después de que las señales son despedidos?)
cuanto a por qué la línea de registro POST viene después, creo que el el servidor espera hasta que finaliza la solicitud para iniciar sesión; solo entonces puede saber si hubo un error del servidor que dio como resultado un código de estado de 500 frente a una solicitud exitosa, cuánto tiempo tomó la solicitud si el formato de registro contiene eso, etc. – dcrosta