CourseTaskLog fully after task submission, so it works in Eager mode (for testing).
Make sure to read only once from result objects when getting result status, so that values are consistent.
from client. Tasks.py remains the task implementations running on the celery worker. In particular, move status message generation out of task thread to client side.