<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def request_sensor_sampling(self, req, msg):
 """Configure or query the way a sensor is sampled. Sampled values are reported asynchronously using the #sensor-status message. Parameters name : str Name of the sensor whose sampling strategy to query or configure. strategy : {'none', 'auto', 'event', 'differential', \ 'period', 'event-rate'}, optional Type of strategy to use to report the sensor value. The differential strategy type may only be used with integer or float sensors. If this parameter is supplied, it sets the new strategy. params : list of str, optional Additional strategy parameters (dependent on the strategy type). For the differential strategy, the parameter is an integer or float giving the amount by which the sensor value may change before an updated value is sent. For the period strategy, the parameter is the sampling period in float seconds. The event strategy has no parameters. Note that this has changed from KATCPv4. For the event-rate strategy, a minimum period between updates and a maximum period between updates (both in float seconds) must be given. If the event occurs more than once within the minimum period, only one update will occur. Whether or not the event occurs, the sensor value will be updated at least once per maximum period. The differential-rate strategy is not supported in this release. Returns ------- success : {'ok', 'fail'} Whether the sensor-sampling request succeeded. name : str Name of the sensor queried or configured. strategy : {'none', 'auto', 'event', 'differential', 'period'} Name of the new or current sampling strategy for the sensor. params : list of str Additional strategy parameters (see description under Parameters). Examples -------- :: ?sensor-sampling cpu.power.on !sensor-sampling ok cpu.power.on none ?sensor-sampling cpu.power.on period 500 !sensor-sampling ok cpu.power.on period 500 """

        f = Future()
        self.ioloop.add_callback(lambda: chain_future(
            self._handle_sensor_sampling(req, msg), f))
        return f