<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def renew_item(self, item, expiration):
 """Update the expiration time for ``item``. The item will remain checked out for ``expiration`` seconds beyond the current time. This queue instance must have already checked out ``item``, and this method can fail if ``item`` is already overdue. """

        conn = self._conn()
        self._run_expiration(conn)
        expiration += time.time()
        script = conn.register_script("""
        -- already expired?
        if redis.call("hget", KEYS[2], "i" .. ARGV[1]) ~= "w" .. ARGV[3]
        then return -1 end

        -- otherwise just update the expiration
        redis.call("zadd", KEYS[1], ARGV[2], ARGV[1])
        return 0
        """)
        result = script(keys=[self._key_expiration(), self._key_workers()],
                        args=[item, expiration, self._get_worker_id(conn)])
        if result == -1:
            raise LostLease(item)
        return