code: def open_recruitment(self, n=1):
          
          logger.info("Opening MTurk recruitment for {} participants".format(n))
          if self.is_in_progress:
              raise MTurkRecruiterException(
                  "Tried to open_recruitment on already open recruiter."
              )
  
          if self.hit_domain is None:
              raise MTurkRecruiterException("Can't run a HIT from localhost")
  
          self.mturkservice.check_credentials()
  
          if self.config.get("assign_qualifications"):
              self._create_mturk_qualifications()
  
          hit_request = {
              "max_assignments": n,
              "title": self.config.get("title"),
              "description": self.config.get("description"),
              "keywords": self._config_to_list("keywords"),
              "reward": self.config.get("base_payment"),
              "duration_hours": self.config.get("duration"),
              "lifetime_days": self.config.get("lifetime"),
              "ad_url": self.ad_url,
              "notification_url": self.config.get("notification_url"),
              "approve_requirement": self.config.get("approve_requirement"),
              "us_only": self.config.get("us_only"),
              "blacklist": self._config_to_list("qualification_blacklist"),
              "annotation": self.config.get("id"),
          }
          hit_info = self.mturkservice.create_hit(**hit_request)
          if self.config.get("mode") == "sandbox":
              lookup_url = (
                  "https://workersandbox.mturk.com/mturk/preview?groupId={type_id}"
              )
          else:
              lookup_url = "https://worker.mturk.com/mturk/preview?groupId={type_id}"
  
          return {
              "items": [lookup_url.format(**hit_info)],
              "message": "HIT now published to Amazon Mechanical Turk",
          }
docs: Open a connection to AWS MTurk and create a HIT.