<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def set_keyspace(self, keyspace):
 """ Change the keyspace which will be used for subsequent requests to this CassandraClusterPool, and return a Deferred that will fire once it can be verified that connections can successfully use that keyspace. If something goes wrong trying to change a connection to that keyspace, the Deferred will errback, and the keyspace to be used for future requests will not be changed. Requests made between the time this method is called and the time that the returned Deferred is fired may be made in either the previous keyspace or the new keyspace. If you may need to make use of multiple keyspaces at the same time in the same app, consider using the specialized CassandraKeyspaceConnection interface provided by the keyspaceConnection method. """


        # push a real set_keyspace on some (any) connection; the idea is that
        # if it succeeds there, it is likely to succeed everywhere, and vice
        # versa.  don't bother waiting for all connections to change- some of
        # them may be doing long blocking tasks and by the time they're done,
        # the keyspace might be changed again anyway
        d = self.pushRequest(ManagedThriftRequest('set_keyspace', keyspace))

        def store_keyspace(_):
            self.keyspace = keyspace
        d.addCallback(store_keyspace)
        return d