code: def notify_duration_exceeded(self, participants, reference_time):
          
          unsubmitted = []
          for participant in participants:
              summary = ParticipationTime(participant, reference_time, self.config)
              status = self._mturk_status_for(participant)
  
              if status == "Approved":
                  participant.status = "approved"
                  session.commit()
              elif status == "Rejected":
                  participant.status = "rejected"
                  session.commit()
              elif status == "Submitted":
                  self._resend_submitted_rest_notification_for(participant)
                  self._message_researcher(self._resubmitted_msg(summary))
                  logger.warning(
                      "Error - submitted notification for participant {} missed. "
                      "A replacement notification was created and sent, "
                      "but proceed with caution.".format(participant.id)
                  )
              else:
                  self._send_notification_missing_rest_notification_for(participant)
                  unsubmitted.append(summary)
  
          if unsubmitted:
              self._disable_autorecruit()
              self.close_recruitment()
              pick_one = unsubmitted[0]
              # message the researcher about the one of the participants:
              self._message_researcher(self._cancelled_msg(pick_one))
              # Attempt to force-expire the hit via boto. It's possible
              # that the HIT won't exist if the HIT has been deleted manually.
              try:
                  self.mturkservice.expire_hit(pick_one.participant.hit_id)
              except MTurkServiceException as ex:
                  logger.exception(ex)
docs: The participant has exceed the maximum time for the activity,
          defined in the "duration" config value. We need find out the assignment
          status on MTurk and act based on this.