我正在使用Django的信號,但他們似乎收到兩次,即使發射一次。下面是我的工作(這是一個簡單的包裝使用Uploadify使用Django)的代碼...Django信號發射一次,接收兩次 - 爲什麼?
# 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)
(我只注意到我的信號被拼錯了)
我相信你注意到那裏的打印語句。在控制檯上,這是它的顯示:
(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 -
(亦奇是爲什麼Django的報告頁面POST的信號被解僱後?)
至於爲什麼POST日誌行來後,我相信服務器一直等到請求完成記錄爲止 - 只有這樣才能知道是否存在導致500狀態碼與成功請求相關的服務器錯誤,如果日誌格式包含該請求,請求將花費多長時間等等。 – dcrosta 2009-09-25 17:43:18