What you are likely to do is create a task from your controller. In fact, if you are reading the Play documentation, you are strongly advised to do lengthy processing in Jobs so that they do not hang HTTP request streams.
So, your work is done by processing the CSV file. The next step is to record when each data set has been processed. So, suppose you pass your task a link, for example, uid or some unique number that you pass to your client. Then you just need to write (possibly to the database, if you want to easily match statelessness and scale) each increase in your number of data sets processed against your unique identifier.
eg
@Entity
public class DatasetProgress extends Model {
public Long uid;
public Long datasetsDone;
public Long datasetsTotal;
}
, DatasetProgress uid, .