Men*_*sur 6 python celery flask
有没有办法将请求复制到Flask中的芹菜任务,使得任务在启动任务的请求上下文中执行?
我需要在芹菜任务中访问烧瓶安全当前用户,但由于任务在请求上下文之外,我不能这样做.我需要来自请求的其他信息,因此只需将当前用户转发到任务就行了.
我的任务确实插入了数据库.它需要当前用户保存创建行的用户的id.将用户对象传递给任务可以解决问题.但是,应用程序逻辑是这样的,每次插入/删除/更新都会在flush事件之前记录,它会记录执行修改的用户,他的IP,原始url,它插入的数据......)
日志事件就像我在刷新之前说的那样完成,并且它在99%的场景中工作.但是当我有一个冗长的任务我想成为芹菜任务时,请求数据不可用,当前用户也不可用(因为它在原始请求上下文之外)
小智 3
将 request 或 current_user 对象传递给 celery 任务并不是现成的方法,因为它们是不可序列化的。但人们已经通过创建一个包装器来在请求上下文中调用 celery 任务来解决这个问题。
Flask 请求上下文博客文章中的 Celery 任务详细探讨了这个主题。Xion的要点以及aaviaryan使用请求上下文包装器衍生的要点。