【问题标题】:adding a view in queue using django-rq使用 django-rq 在队列中添加视图
【发布时间】:2014-07-29 22:00:57
【问题描述】:

我正在使用 rq 在 django 中进行排队。而我正在添加一个视图函数,该函数返回一个显示在队列中加载的模板,它会给出一个错误,但是如果一个不将请求作为其输入的正常函数工作正常..怎么做

    def r():
        print "hello" 

正常工作 但是

    def page1(request):
         return render(request, 'new1/index.html', {'currentdate': "sdf"})

不工作。怎么做。 我的主要目标是使用 django 运行 hive 查询。为此,我需要让该 python 脚本等到它完成查询并在那时显示“处理”。 因此我使用了 rq 之类的排队解决方案,并希望将我的脚本添加到队列中,并在完成时将其重定向到不同的模板页面

【问题讨论】:

  • 能否显示错误日志?
  • 你怎么称呼这个?你确定你实际上是在传递请求对象吗?
  • TypeError: page1() 只需要 1 个参数(给定 0) Traceback(最近一次调用最后一次):文件“/usr/local/lib/python2.7/dist-packages/rq/worker. py”,第 479 行,在 perform_job rv = job.perform() 文件“/usr/local/lib/python2.7/dist-packages/rq/job.py”,第 466 行,在 perform self._result = self. func(*self.args, **self.kwargs) TypeError: page1() 只需要 1 个参数(给定 0) 11:21:44 将作业移动到失败的队列。
  • 这里的request有什么用?
  • 你可以从错误中看出你没有给函数一个请求对象:TypeError: page1() 只需要1个参数(0给定)

标签: django python-2.7 django-templates


【解决方案1】:

你没有将请求对象传递给这个函数,因此你得到了错误。更新您的调用方式或传递所需的对象。

如果您将函数更新为:

def page1():
   return render('new1/index.html', {'currentdate': "sdf"})

【讨论】:

  • 我已经尝试过了,但它给出的 'str' 对象没有属性 'META'
  • 在这种情况下,您可以使用另一个函数进行渲染,一个只接受模板和上下文的函数,或者模拟一个请求对象......
【解决方案2】:

为此,我只需要更改这些功能的工作方式。无法通过 enqueue 访问正在接受请求的函数(即通过 web 通过 url 访问)。 因此,我们需要通过正在排队其他任务的其他函数返回这些模板。

【讨论】:

    猜你喜欢
    • 2013-08-08
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多