How do I debug error 500's served up by the DJ

2019-08-04 09:28发布

问题:

I'm trying to debug my DJango Paypal IPN integration but I'm struggling. The Django dev server reports a 500 error to the console (but no other details) and the IPN test tool reports a 500 error but no other details.

I've tried disabling the DEBUG mode to try and get it to send me emails but despite setting up the EMAIL_HOST to something suitable, I'm not seeing any emails. I tried and verifying that the email system is working with a call to send_mail ..but that succeeds and I still see no emails regarding internal server errors.

What could I be missing?

edit

I'm running the dev server from PyCharm and the console output looks like this:

runnerw.exe C:\Python26\python.exe manage.py runserver 192.168.1.4:80
Validating models...

0 errors found
Django version 1.4 pre-alpha, using settings 'settings'
Development server is running at http://192.168.1.4:80/
Quit the server with CTRL-BREAK.
Verifying...
...response: VERIFIED
IpnEndPoint.on_process
Valid: {u'last_name': u'Smith', u'txn_id': u'491116223', u'receiver_email': u'seller@paypalsandbox.com', u'payment_status': u'Completed', u'tax': u'2.02', u'payer_status': u'unverified', u'residence_country': u'US', u'invoice': u'abc1234', u'address_state': u'CA', u'item_name1': u'something', u'txn_type': u'cart', u'item_number1': u'AK-1234', u'quantity1': u'1', u'payment_date': u'14:03:49 Nov 16, 2011 PST', u'first_name': u'John', u'mc_shipping': u'3.02', u'address_street': u'123, any street', u'charset': u'windows-1252', u'custom': u'xyz123', u'notify_version': u'2.4', u'address_name': u'John Smith', u'address_zip': u'95131', u'test_ipn': u'1', u'receiver_id': u'TESTSELLERID1', u'payer_id': u'TESTBUYERID01', u'mc_handling1': u'1.67', u'verify_sign': u'A8SIYWSxkrwNPfuNewSuxsIAatvMAi2mxYjlYvaiWh3Z4BuIQojK3KBO', u'mc_handling': u'2.06', u'mc_gross_1': u'9.34', u'address_country_code': u'US', u'address_city': u'San Jose', u'address_status': u'confirmed', u'address_country': u'United States', u'mc_fee': u'0.44', u'mc_currency': u'USD', u'payer_email': u'buyer@paypalsandbox.com', u'payment_type': u'instant', u'mc_shipping1': u'1.02'}
Logging Transaction..
[16/Nov/2011 22:20:49] "POST /IPN/ HTTP/1.0" 500 104946

回答1:

Another thing to try is to launch a simple SMTP server on your machine.

python -m smtpd -n -c DebuggingServer localhost:1025

Which will output on your console all emails headers and body. Make sure localhost and the port 1025 correpond to what you have in your settings.py, respectively in EMAIL_HOST and EMAIL_PORT.

Source: Djangodocs Testing email sending



回答2:

given that you are running a pre-alpha version of django, I would recomment asking this question on the django user list https://groups.google.com/group/django-users



回答3:

have a look at django-sentry

it logs 500 errors (also supports regular logging), making the dynamic "orange 500 pages" browsable after the fact. this is especially useful when you never get the original error page, e.g. when using ajax or remote apis like your case