Thanks. Good detective work.
We should use the method "send_robust instead" instead of "send" in
"Order.order_success".
Django docs:
"send_robust() catches all errors derived from Python's Exception
class, and ensures all receivers are notified of the signal. If an
error occurs, the error instance is returned in the tuple pair for the
receiver that raised the error."
ALL developers:
Please Do you know more signals which need "send_robust" instead of
"send"?
Please, not too much signals to be changed, only the most important
because
a) It is more complicated - it requires to solve error handling for
them.
b) For some signals it is better to normally raise exception if one
listener fails,
e.g. for satchmo_price_query.
(It could be more expensive to sell one hour with bad price than to
stop it for one hour.)
Shaun,
Good detective work, but how it is possible that you did not note any
html 500 errors in web server log at the time of payment?
You probably mean "order_success". Hm, I do not know any
"order_completed".
-- Hynek