wsgiserver CherryPy не создает новый поток для каждого запроса - он использует пул. Каждый из этих рабочих потоков является подклассом threading.Thread, поэтому все они должны быть доступны через threading.enumerate ().
Однако, если вы говорите конкретно о cherrypy.thread_data, это нечто другое: threading.local. Если вы используете последнюю версию Python, то все, что написано на C, и вы (вероятно, по праву) не имеете к ней многопоточного доступа из Python. Если вы действительно нуждаетесь в этом и действительно знаете, что делаете, лучше всего обычно добавить дополнительную ссылку на такие вещи в глобальный контейнер в то же время, когда они вставлен в структуру thread_data. В качестве ключей для этих глобальных контейнеров я рекомендую использовать dicrefs - достаточно Python ORM, которые используют их для пулов соединений (см., Например, мой собственный Geniusql), чтобы вы могли достаточно легко научиться их реализовывать.