问题标签 [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.
python-huey - 监控 Huey(Redis 队列、队列中的时间和工人数)
把芹菜换成了休伊,我喜欢它的一切:)
我确实想念 Celery 的一件事是它的花卉监测工具。Huey 是否有任何监控工具?
我们需要跟踪 Redis 队列中的任务数、任务在被工作人员接收之前花费在队列中的总时间以及正在运行的工作人员数量。
是否有任何 Huey 钩子可以帮助解决这个问题?
我已经查看了 Huey 事件,但它们似乎只有在消费者完成任务后才会触发。
我现在的计划是:
在任务入队时将时间戳作为参数传递给任务,然后在工作人员将其从队列中拉出后,我可以将其与时间戳进行比较。这将获得排队时间。
我可以在 Redis Huey Queue 上创建一个调用 LLEN 的服务来跟踪作业。
我不确定获得 # 名工人的最佳方式。理想情况下,如果我们的任务队列达到一定长度,我们希望扩大 Huey 工作人员的实例数量。
有人有监控 Huey 的经验吗?文档中是否缺少可以帮助此过程的内容?
python - 烧瓶 g 对象是否有超时?
我将 Flask 与 Huey 结合使用来处理脱离上下文的长时间运行的任务。所以本质上,一个烧瓶上下文是由一个 Huey 消费者(一个工作进程)启动的,它做了很多需要一些时间的工作。在这个过程中,我使用 Flask 全局“g”对象来存储用户。
问题是大约 20 分钟后 g.usr 对象突然消失了。这是一个很难调试的问题,因为此时的代码正在由 Huey 任务工作者运行,而我无法在 IDE 中运行它。(嗯,我可以,但是上下文不同,所以情况不同)。
我可以看到它开始时很好,因为它会将包含用户 ID 的记录写入数据库,但大约 20 分钟后,用户 ID 字段突然为空。看起来好像 g 对象在某个地方被清理了。
所以我的问题是,是否有人知道什么可能会触发 g 对象中 usr 数据的消失。g-object 是否存在超时或某种形式的垃圾收集?
peewee - 在 Huey 中为周期性任务实现 context_task 的最佳方法是什么?
我正在寻找在 Huey 中通过定期任务实现 Peewee 的上下文管理器的最佳方法。普通任务有那个漂亮的 Huey.context_task() 装饰器,但对于周期性任务似乎没有任何类似的东西。
我是否正确地假设我只需要在定期任务中使用(更丑的)with 语句?
thread-safety - 在 Huey 中使用线程管理共享资源
我必须更新 peewee 数据库()中的许多行(每行增加一个值SqliteDatabase
)。有些对象可以不创建,所以我必须在使用它们之前使用默认值创建它们。我会使用 peewee 文档(原子更新)中的方法,但我不知道如何混合model.get_or_create()
和in [my_array]
.
所以我决定在事务中进行查询以在最后提交一次(我希望这样做)。
为什么我写堆栈溢出是因为我不知道如何db.atomic()
在 Huey 中使用线程(我用 4 个工人测试过),因为.atomic()
锁定了连接(peewee.OperationalError: database is locked
)。我试过使用@huey.lock_task
,但它不是我发现的问题的解决方案。
我班的代码:
我的任务代码:
python - 在 Windows 上运行 huey_consumer.py demo.huey 的问题
我尝试按照本指南huey
在 Windows 上测试任务队列:
https ://huey.readthedocs.io/en/latest/guide.html
当我运行这个命令时:
出现此错误:
但我在python控制台中尝试了这个没有问题:
不知道为什么在使用 huey_consumer.py 时会出现问题
django - 带有 Huey 任务消费者的 Django:TestCase 方法触及真实数据库
我正在编写一个使用 Huey 任务队列的 Django 应用程序,按照相关 Huey 文档中的描述进行配置。运行一些基本测试,我禁用了immediate
设置以尝试manage.py run_huey
在其自己的进程中运行任务使用者的命令。
然后我运行了一个 Django ,该 DjangoTestCase
调用了一个写入数据库的 Huey 任务(在 aTestCase
中,它应该是一个临时数据库,在测试后创建并销毁。)该任务在 Huey 进程中被消耗并按预期运行;但是,在测试运行的任务中创建的对象已写入我的实际(开发)数据库。
我理解为什么——无论 Django 在运行测试时如何启动一个假数据库,都无法触及 Huey 消费者进程;我知道,根据 Huey 文档,它的默认行为是在启用 Django 的设置时以立即模式运行(一旦任务入队就执行任务,而不运行调度数据库或单独的消费者进程)DEBUG
,所以我正在退出肢体。
但是,我觉得我的一些标准 Huey 功能在即时模式下不可用——安排将来发生的任务,在单独的线程或进程中运行更重的计算——是我想要测试或试验的东西开发中。因此,我的问题是:有没有一种好方法可以用 Django 配置 Huey 来实现这一点——当 Huey 任务在单独的进程中使用时,TestCase 的数据库模拟可以按预期工作?
(我对 Django 很陌生,测试,几乎所有这些,所以我很高兴听到这样的论点,即这超出了我应该关注的测试行为范围。)
python - 从 redis 数据存储中使用 python huey 获取任务结果
我正在使用 flask 中的 Huey 任务队列https://github.com/coleifer/huey。我正在尝试运行一个任务并从我的初始函数中获取一个任务 ID 号:
运行后,我插入输出的 id(与屏幕截图中的结果相同)
进入 :
但是我得到“没有价值”
如何访问数据存储中的值?
python - Huey 任务队列仅在上次重试时处理错误并检索异常回溯
目前在我的文件中设置了这个片段,tasks.py
以便在huey
任务失败时向 Django 项目的管理员发送一封电子邮件:
这会产生以下(示例)电子邮件主题
与身体:
这很漂亮但是......问题:
- 现在,只要任务失败(包括重试)就会触发此事件。我希望仅在所有重试失败的情况下发送它。因此,如果一项任务有
retries=2
,现在我会收到 3 封电子邮件(原始错误 + 2 次重试)。如何让它仅在最后一次重试时发送电子邮件? - 有没有办法打印异常的
exc
回溯?
PS 我尝试通过 Django 项目日志记录来设置它,但这种方法提供了更细粒度的控制,所以我对此很满意。
更新
基于@Adam Chainz 和@coleifer 的答案(均正确)的更新模块现在看起来像:
django - 休伊;不在一个 Django 应用程序中运行任务
我有一个名为“tickets”的应用程序,它在设置文件中,可以正确导入。
我正在为后台任务运行 Huey,它确实在其他两个应用程序中运行所有任务,而不是在应用程序“票证”中。这是应用票证中的模块“助手”:
这是我的 Huey 配置:
这是 manage.py run_huey 的输出: