По правильному, если уж указали bind=True, то подразумевается что в вашем таске будет использоваться инстанс таска, а значит функция первым аргументом получает self. Очень странно, что у Вас работало по другому, может были декораторы какие?
По докам, работать должно только так
@celery.task(bind=True)
def task_first(self):
pass
@celery.task()
def task_second():
pass