ftrack_api threadsafe in API Posted November 23, 2017 · Report reply Thanks @Mattias Lagergren for your answer! For us it's quite important because we are planing to use threads in all of our tools. We would like to use at least 1 thread in order to not freeze the UI while it is fetching the data. 2 minutes ago, Mattias Lagergren said: One possible way to move forward with this is to change the example above and pass in the project id to the threads and then query for TypedContext where project_id is <project_id> in the thread. You mean something like this: from multiprocessing.dummy import Pool as ThreadPool import ftrack_api from ftrack_api.symbol import Symbol session = ftrack_api.Session() def check_keys(entity): for key in entity.keys(): if isinstance(entity[key], Symbol): print entity, ': ', key def check_children(entity_id): entity = session.get('TypedContext', entity_id) if 'children' in entity.keys(): for child in entity['children']: check_keys(entity=child) check_children(entity_id=child['id']) def main(): projects = session.query("Project").all() projects_id = [project["id"] for project in projects] pool = ThreadPool() pool.map(check_children, projects_id) if __name__ == "__main__": main() It still doesn't work. In the thread most of the time session.get('TypedContext', entity_id) returns None.