moved signals to signals.py. long-running computations now defer to Celery if possible