Child workflow cancel

I need to cancel the child workflow at some period of time in the future.
I am running a cron-type child workflow and want to terminate it without canceling the parent workflow.
The question is how I can do that with python SDK.
Seems like this works fine:
handle.close()

Or maybe you know a better way how to delay child workflow for 24 without using cron and then canceling?

Yes, that works fine. So you can just sleep for 24 hours and then issue that cancel like any other Python asyncio task (untested just typed here in forum):

handle = await workflow.start_child_workflow(MyChildWorkflow.run)
async def cancel_after_some_time():
    await asyncio.sleep(24 * 60 * 60)
    handle.cancel()
asyncio.create_task(cancel_after_some_time())
await handle

You can also set a run_timeout (or execution_timeout if you continue-as-new the child or have a retry policy) when starting the child.