问题标签 [python-huey]

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 回答
627 浏览

python - Huey 不在 Django 中调用任务

我有一个 Django 休息框架应用程序,它在序列化程序创建方法中连续调用 2 个 Huey 任务,如下所示:

在终端中运行 huey 进程时,当我点击这个端点时,我可以看到只有一个或另一个任务被调用,但从来没有两个。我正在使用默认设置运行 huey(带有 1 个线程工作者的 redis。)

如果我更改代码以便将对象本身作为参数而不是 ids 传递,并删除@db_task方法中的 django 查询,事情似乎工作正常。

我最初使用 ids 作为参数的原因是因为我假设(或在某处读到)huey 使用 json 序列化作为默认值,但在研究之后,pickle它实际上是默认序列化程序。

一种理论是,由于我只运行一个工作者,并且@db_periodic_task在应用程序中也有一个方法,因此该进程只能处理侦听任务或随时执行它们,但不能同时处理两者。这就是 celery 的工作方式,您需要为调度程序和工作人员分别设置一个单独的进程,但这在 huey 的文档中没有提到。

0 投票
0 回答
104 浏览

python - 使用队列时如何加快 GET 请求

我正在使用 Huey/Hueyx 作为队列来缓冲我需要使用 pythons 请求库获取的资源。凭证(一个令牌)存储在 Redis 中,任务执行器调用该函数,获取资源,然后将其索引到弹性搜索。因为我需要请求数百万个不同的资源,而我的解决方案非常慢(每分钟大约 5k 个请求),所以队列很快备份并且性能受到影响。

我的问题是:我怎样才能通过一些简单的步骤更快地完成整个考验?添加更多消费者始终是一种选择,但在探索其他选择之前,我现在不想这样做。我读过异步代码,但看起来它会使代码的复杂性增加四倍。另外,我对异步编程模型一无所知。

0 投票
1 回答
31 浏览

python - django huey 在过滤时总是返回空查询集

如果我在没有 django-huey 的 django 中运行它,我会得到一个过滤的查询集,但是如果我开始使用 django-huey,我总是会得到一个空的查询集。只有“DBAccess”被打印,文件总是“[]”。

我是否必须在 settings.py 中添加其他设置?这是我当前的 Huey 设置

0 投票
1 回答
489 浏览

python - 从 Crontab 开始的简单 Huey 示例的挑战

我正在尝试将 Huey 文档中建议的代码组织实施到现有应用程序中,并遵循简单的示例。目标是构建一个每天凌晨 3:00 运行任务的 crontab。

我打开了两个终端选项卡,第一个是消费者运行示例中的脚本:

然后,在另一个选项卡中,我运行 main.py 脚本:

配置文件

任务.py

主文件

该任务立即运行,并且由于我对 Huey 是全新的,不确定我可能会缺少什么以使其按计划工作。我尝试了很多 crontab 组合,不确定是否存在挑战,或者我如何run_this_functionmain方法中调用。任何帮助表示赞赏!

0 投票
2 回答
449 浏览

django - 在生产环境中运行 python manage.py run_huey

我最近使用 Ubuntu 20.04、gunicorn 和 nginx 部署了一个 django Web 应用程序,Huey 已在本地完美运行。在生产中,我需要使用 systemd 运行 python manage.py run_huey

我已经尝试过这里的建议Can't enable huey service on deploy server but not working。

我的代码类似于该建议。我会感谢任何贡献。提前致谢

0 投票
1 回答
736 浏览

django - Huey 任务不是从 django 视图运行,而是从 shell 运行

我遇到了一个问题,想知道可能出了什么问题。

问题

从 Web 视图调用时,Huey 任务未运行。但是,当从同一 VM 的 shell 命令调用时,它运行良好。任务在 huey 上注册得很好。有问题的任务是handshake

  1. 虚拟机:Web,使用视图:不工作
  2. 虚拟机:Web,使用 Shell:工作
  3. VM:工人,使用外壳:工作

设置

我正在docker中运行一个应用程序。运行两个具有完全相同设置的相同图像实例,连接到相同的 redis 和相同的 postgres。我已经验证两个实例都连接到同一个 Redis。

这两个实例是:

  1. web.1:以正常线程模式运行 gunicorn Web 应用程序。
  2. worker.1: 跑步python manage.py run_huey

设置

任务

这是显示任务已注册的 run_huey 的输出(为清楚起见删除了一些行)。

测试一:调用的网页handshake

网络日志中的输出:

工作日志中没有记录任何内容。

handshake测试 2:从运行 web 的同一实例调用 Django Shell

在工作人员日志中:

那么我错过了什么?我是否需要在 App config 中添加一些代码来加载任务?我什至尝试run_hueyweb.1实例上运行但同样的问题。所以它不是环境,不是redis。我猜它与网络没有连接到redis有关。

如果可以,请帮忙。我只是不确定我错过了什么。

谢谢阿米特

0 投票
1 回答
157 浏览

python - 如何在huey上运行多个带有参数的任务?

我做了类似于芹菜的设置

功能

启动任务

结果:

一切正常,但只完成最后一项任务。

我需要这种启动方式。在生产中,在包装器中,任务将在线程中启动。

有人可以有任何想法吗?

0 投票
0 回答
97 浏览

python - 发出停止长时间运行的 Huey 任务的信号

我正在使用 Huey 对 Django 应用程序中的对象执行一些处理操作。

这是我希望解决的情况的简化示例。我有一个模型,它存储了需要处理Album的各种数量。Images处理操作定义在一个用@task装饰器包装的不同函数中,因此它能够同时运行(当工人数量> 1时)。

问题是如何以album.should_pause()正确的方式实施。当前的实现如下所示:

因此,在每次迭代中,都会查询数据库以更新模型,以确保该state字段没有更改为 以外的其他AlbumProcessingState.RUNNING值,这表明专辑处理任务应该中断。

虽然它有效,但感觉不对,因为我必须在每次迭代时从数据库中更新模型,但这些感觉可能是错误的。你怎么看?

0 投票
1 回答
216 浏览

django - 如何像在 celery 任务中一样在 HUEY 动态周期性任务中添加到期日期?

有没有办法将到期日期添加到 Huey Dynamic 定期任务? 就像 celery 任务中有一个选项 - "some_celery_task.apply_async(args=('foo',), expires=expiry_date)" 在创建任务时添加到期日期。

我想在创建 Huey Dynamic 定期任务时添加到期日期。我使用了“撤销”,它按预期工作,但我想在到期日期之后完全停止任务而不是撤销它。当 Huey 动态周期性任务被撤销时 - Huey 终端上会显示消息,表明 huey 函数被撤销(当 crontab 条件变为真时)。(我在 Django 中使用 Huey)

(额外)我做了什么来满足这个到期日期的需要 - 我创建了返回 crontab 的 Days - Months 对的函数:例如。开始日期 = 2021-1-20 ,结束日期 = 2021-6-14 然后函数将返回 - Days_Month :[['20-31',1], ['*','2-5'], [' 1-14','6']] 然后我调用 Huey Dynamic 周期性任务(本例中调用了 3 次)。(Days_Month 函数将根据要求返回 Day-Months - Daily、Weekly、Monthly 或在 n 天后重复)

有一个更好的方法吗? 感谢您的帮助。

0 投票
1 回答
78 浏览

python - 从代码启动进程消费者并获取信号回调

如何从 CPU 绑定任务的代码开始处理消费者?

我怎样才能在没有立即的情况下获得信号回调?如果我使用 immediate=True 运行 MemoryHuey 一切正常,但如果我将其设置为 False,我只会得到空列表。

问题:

我有几个端点必须以不同的优先级进行处理。这些进程都是 CPU 密集型的,必须移动到后台并使用多处理进行处理。Redis 集群稍后用作作业存储。

谢谢:) PS:忽略异步

编辑:或者是否有一个简单的解决方案可以在 AWS EB 中与主管一起运行?

编辑:我使用 ElasticBeanstalk 进行部署/与主管一起运行?