<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def should_trace(self, sampling_req=None):
 """ Return True if the sampler decide to sample based on input information and sampling rules. It will first check if any custom rule should be applied, if not it falls back to the default sampling rule. All optional arugments are extracted from incoming requests by X-Ray middleware to perform path based sampling. """

        if sampling_req is None:
            return self._should_trace(self._default_rule)

        host = sampling_req.get('host', None)
        method = sampling_req.get('method', None)
        path = sampling_req.get('path', None)

        for rule in self._rules:
            if rule.applies(host, method, path):
                return self._should_trace(rule)

        return self._should_trace(self._default_rule)