Creating a group and then joining means that the worker process executing this bit is going to be stuck waiting for all the other tasks to finish (unless I misunderstood something). With a couple thousand tasks that might take some time. The only value we got from it is reporting the `sum(tower_updates)` - that's not really worth having a process sitting idle for a long time. I think I'd avoid the group/join and just call all the tasks via `update_tower.delay(row['mcc'], ...)`.