问题标签 [django-rq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1508 浏览

python - 来自 django-rq 的 rqworker 没有收到任务

我试图让工作人员按照此处解释的方法运行一些异步函数。

这意味着,在我的tasks.py文件中,我有:

然后在我的views.py文件中:

目前我正在本地进行测试。因此,我打开了两个终端:一个运行python manage.py runserver,另一个运行python manage.py rqworker default

因此,当我在浏览器中加载“results_page.html”时,我希望任务排队并开始使用 rqworker 运行。问题是这只发生在一些随机时间,而在其余时间,rqworker 的终端只显示:

我的第一个想法是,当我同时使用两个不同的终端时,连接没有正确完成。但是,我认为这没有意义,因为有时异步任务确实会运行。

为什么工人有时看不到任务?

0 投票
0 回答
230 浏览

python - django:表单提交后在哪里触发工作人员

我已经编写了一些我想使用 django-rq 运行的代码,即使用工人。我创建了一个表单,用户可以在其中选择多个对象并按下按钮开始操作。为此,我在views.py中有:

我应该在哪里添加这段代码以开始使用工人执行作业?它来自FormView的功能之一吗?form_valid/dispatch ?

0 投票
0 回答
172 浏览

django - 来自环境设置问题或 django_rq 问题的 Django 字典?

尝试从环境变量动态创建 Django_rq 队列配置时,我遇到了一种奇怪的行为。

我的环境变量是:

进入我的 settings.py 我有:

我期待 denerated RQ_QUEUES dict 像这个正在工作的那样:

即使配置似乎运行良好并且我可以从 django_rq 网页看到队列,但我的工作人员无法连接并实际上抛出此错误,就像 redis 中没有队列键一样

回溯(最后一次调用):文件“manage.py”,第 10 行,在 execute_from_command_line(sys.argv) 文件“/home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django/core/ management/ init .py”,第 350 行,在 execute_from_command_line utility.execute () 文件“/home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django/core/management/init.py”,第 342 行,在执行 self.fetch_command(subcommand).run_from_argv(self.argv) 文件“/home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django/core/management/base .py”,第 348 行,在 run_from_argv self.execute(*args, **cmd_options) 文件“/home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django/core/management/base.py ”,第 399 行,在执行输出 = self.handle(*args, **options) 文件“/home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django_rq/management/commands/rqworker.py ",第 79 行,在处理队列 = get_queues(*args) 文件中 "/home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django_rq/queues.py",第 166 行,在 get_queues queue_params = QUEUES [queue_names[0]] KeyError:'默认'

顺便说一句:如果我使用上面的静态配置,它工作得很好,所以我的嫌疑人更关注 Django_rq 而不是创建队列,但也许我也在 Django 的设置上做了一些不正确的事情。

任何帮助将非常感激。谢谢。

F。

0 投票
1 回答
2088 浏览

python - RQ: redis.exceptions.ResponseError: Command # 3 ... of pipeline 导致错误:使用内存 > 'maxmemory' 时不允许使用 OOM 命令

我正在使用 RQ 在我的 django 应用程序中运行后台任务,因为它应该是完成工作的最简单方法之一。该任务包括检查一些 API 是否有任何信息已更新,并在我自己的数据库中插入任何新信息。

直到几天前,它工作正常,但我现在收到一个我无法解决的错误。

从错误消息的最后几行:

OOM command not allowed when used memory > 'maxmemory'

一开始我以为我向工人传递了太多数据。但是,我最终减少了传递给具有 5 个键值对的单个字典的数据,但我仍然收到错误消息(请参阅底部的完整消息)。然而,直到上周,我才通​​过了 20 多本字典,每本字典都有更多的元素,而且运行良好。

我在这里这里检查过,但它似乎与我的问题不同。

知道为什么我会收到此错误以及如何解决它吗?


错误信息:

这就是我传递任务的方式

0 投票
2 回答
574 浏览

python - rq 入队函数:因 TypeError 失败:function_xxx() 采用 2 个位置参数,但给出了 3 个

在过去的几个小时里,这一直困扰着我,我似乎还找不到解决方案。

我正在使用 django-rq 将一些长时间运行的任务排入队列。在我的tasks.py中,我有以下内容:

在我的views.py,

但是,当我运行它时,它会失败并显示以下消息-

显然,我在这里做了一些愚蠢的事情,但我还无法弄清楚。有人可以让我知道这里发生了什么吗?

0 投票
1 回答
801 浏览

django - django_rq 作业未添加到队列中

我正在使用:django-rq:0.9.6 rq_scheduler:0.6.1

我对 docker 和 django_rq 还很陌生。

我遇到的问题是,我的工作没有执行或进入队列。

码头工人-compose.yml

设置.py

在 python shell 中,我运行 :do_task.delay()并且 RQ 队列的已完成作业数量大幅增加。当我运行:scheduler.schedule(datetime.utcnow(), 'do_task', interval=20)时,我没有得到任何响应。

任务.py

0 投票
1 回答
2398 浏览

django - 使用主管启动 rqworker 会导致生成错误

尝试使用以下命令启动 rqworker,如其自述文件中所述:

出于某种原因,它给出了ERROR (spawn error)状态显示FATAL Exited too quickly (process log may have details)。日志中没有任何错误信息 ( exit status 1; not expected)。

我的主管配置:

直接从ubuntu用户运行命令按预期工作。

0 投票
1 回答
394 浏览

python - rq 队列总是空的

我在我的项目中使用django-rq

我想要实现的目标: 我有一个加载模板的第一个视图,该模板从网络摄像头获取图像并保存在我的电脑上。然后,视图调用第二个视图,其中处理图像的异步任务使用 rq 排队。最后,在 20 秒延迟后,调用第三个视图。在后一种观点中,我想检索异步任务的结果。

问题:作业对象已正确创建,但队列始终为空,因此无法使用queue.fetch_job(job_id). 读到这里,我设法在 FinishedJobRegistry 中找到了这份工作,但我无法访问它,因为注册表不可迭代。

问题:如何从已完成的作业注册表中检索异步作业的结果?或者,更好的是,我怎样才能正确地将工作排入队列?

0 投票
1 回答
1088 浏览

django - AWS Elastic Beanstalk 上的 django-rq 和 rqscheduler 部署

我有一个在 AWS EB 环境中运行的 Django 应用程序。随着最近的更新,我不得不为一些基于队列的后台任务集成 django-rq 和 rqscheduler。这一切都可以在 localhost 上使用命令rqworkerrqscheduler. 但我很难找到一种让它在 AWS EB 环境中运行的方法。我的分析表明,唯一的方法是使用 ElastiCache。任何人都可以指导我正确的方向或任何可以帮助我的博客文章吗?

0 投票
0 回答
180 浏览

django - 将一个结果推送到另一个工作 django-rq

我正在构建一个应用程序,其中用户的信息经常从外部 API 更新。为此,我正在使用django-rq.

  • 第一项工作每天安排一次,以获取需要更新其个人资料的用户。

  • 对于第一个作业返回的每个结果,安排另一个作业从远程 API 获取新的用户信息并更新我的数据库中的用户。

    /li>

我可以安排这两个工作,如下所示:

然而,这肯定不是我想要的。我想知道是否有任何方法django-rq可以通知何时get_users_to_update完成、获取结果并安排remote_update_user.

rq允许depends_on将依赖作业声明为已提交作业,但似乎此类功能在django-rq.