如何使用celery选择task_id?
现在我从异步结果中得到了一个任务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来撤销任务,不需要手动把它存到别的地方去查找。