如何使用celery选择task_id?

4 投票
1 回答
657 浏览
提问于 2025-04-16 01:59

现在我从异步结果中得到了一个任务ID,然后需要把它保存起来,以便以后能取出来。如果我知道这个任务ID是怎么组成的,那就更好了,这样我就可以自己计算出来,而不是从数据库里去拉取。例如,可以用 task_id=("%s-%s" % (user_id, datetime)) 的方式来设置任务ID。

1 个回答

4

你可以使用“自然ID”,但要真正有用的话,这些ID必须是可逆的。不过,如果你加上时间戳,这个就不行了。而且,ID是唯一的,所以两个任务不能有相同的ID(这样的话就会出现不确定的情况)。

比如说,你有一个任务是要刷新某个Twitter用户的时间线,那么你知道每个用户ID在任何时候只想让一个任务在运行。这样你就可以用一个自然ID,比如:

"update-twitter-timeline-%s" % (user_id)

这样你就可以随时获取这个任务的结果,或者用这个ID来撤销任务,不需要手动把它存到别的地方去查找。

撰写回答