<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def check_spot_requests(self, requests, tags=None):
 """Check status of one or more EC2 spot instance requests. :param requests: List of EC2 spot instance request IDs. :type requests: list :param tags: :type tags: dict :return: List of boto.ec2.instance.Instance's created, order corresponding to requests param (None if request still open, boto.ec2.instance.Reservation if request is no longer open) :rtype: list """

        instances = [None] * len(requests)
        ec2_requests = self.retry_on_ec2_error(self.ec2.get_all_spot_instance_requests, request_ids=requests)

        for req in ec2_requests:
            if req.instance_id:
                instance = self.retry_on_ec2_error(self.ec2.get_only_instances, req.instance_id)[0]

                if not instance:
                    raise EC2ManagerException('Failed to get instance with id %s for %s request %s'
                                              % (req.instance_id, req.status.code, req.id))

                instances[requests.index(req.id)] = instance

                self.retry_on_ec2_error(self.ec2.create_tags, [instance.id], tags or {})
                logger.info('Request %s is %s and %s.',
                            req.id,
                            req.status.code,
                            req.state)
                logger.info('%s is %s at %s (%s)',
                            instance.id,
                            instance.state,
                            instance.public_dns_name,
                            instance.ip_address)
            elif req.state != "open":
                # return the request so we don't try again
                instances[requests.index(req.id)] = req

        return instances