我正在尝试访问 django celery 任务函数中的
request.user
但无法访问,因为该函数不接受任何请求实例,那么我如何访问它?
@shared_task
def run_everyday():
return 0
我已经在 settings.py 中配置了 celery 函数每天运行,就像
CELERY_BEAT_SCHEDULE = {
"run_day": {
"task": "blog.tasks.run_everyday",
"schedule": crontab(hour=10, minute=5),
},
}
我尝试定义另一个函数来返回请求作为结果,但另一个函数需要传递请求已经像
@shared_task
def run_everyday():
user = get_request_user()
return 0
def get_request_user(request):
return request.user
显示
请求未定义
那么我到底如何访问它呢?我是否需要创建一个中间件来获取 celery 任务视图中的 request.user ?如果是的话,效率会高吗?
那么我到底如何访问它?
你不:这没有意义。 Celery 触发一个函数,但不涉及 HTTP 请求,也没有登录用户。该用户会是什么? Celery 只是在特定的时间戳触发一个函数。
这不是您查看页面时访问视图的方式。在这种情况下,浏览器会发送 HTTP 请求,Django 会预处理 HTTP 请求,例如通过查看会话 cookie,然后针对该请求设置用户。
但是当你运行一个函数时,只是经过一段时间后,这并不成立。