是否有一种方法可以将请求复制到Flask中的芹菜任务中,使任务在启动任务的请求上下文中执行?
我需要在芹菜任务中访问flask安全当前用户,但由于任务在请求上下文之外,我不能这样做。我需要从请求中获得额外的信息,所以仅仅将当前用户转发给任务是不够的。
我的任务在数据库上做插入操作。它需要当前用户保存创建该行的用户的id。将用户对象传递给任务将解决这个问题。然而,应用程序的逻辑是这样的,每次插入/删除/更新都是通过before flush事件记录的,该事件记录了进行修改的用户,他的IP,原始url,它插入的数据…)
日志事件就像我在flush之前说的那样完成,它在99%的情况下都有效。但是当我有一个很长的任务,我想要一个芹菜任务,请求数据不可用,当前用户也不可用(因为它在原始请求上下文之外)
没有开箱即用的方式将request或current_user对象传递给芹菜任务,因为它们是不可序列化的。但是人们已经通过创建一个包装器来在请求上下文中调用芹菜任务来解决这个问题。
在一篇Flask请求上下文的博客文章中,芹菜任务详细探讨了这个主题。该目录由Xion创建,由aviaryan通过Request Context包装器派生。