小编tam*_*yte的帖子

监控 Huey(Redis 队列、队列中的时间和工作人员数量)

为休伊换了芹菜,我喜欢它的一切:)

Celery 有一件我很怀念的事情是它的花卉监控工具。是否有适用于 Huey 的监控工具?

我们需要跟踪 Redis 队列中的任务数量、任务在被工作人员接收之前进入队列所花费的总时间,以及正在运行的工作人员数量。

是否有任何 Huey 钩子可以帮助解决这个问题?

我已经查看了 Huey 事件,但它们似乎只有在消费者接受任务后才会触发。

我现在的计划是:

  1. 当任务被排队时,将时间戳作为参数传递给任务,然后我可以将它与工作人员从队列中拉出的时间戳进行比较。这将获得排队时间。

  2. 我可以创建一个服务,在 Redis Huey 队列上调用 LLEN 来跟踪作业。

  3. 我不确定获得# 工人的最佳方式。理想情况下,如果我们的任务队列达到一定长度,我们希望增加 Huey 工作线程的实例数量。

有没有人有监控 Huey 的经验?我在文档中遗漏了什么可以帮助这个过程?

python-huey

7
推荐指数
1
解决办法
1075
查看次数

Django 测试用例中的线程没有关闭数据库连接

我正在尝试测试我为防止竞争条件而设置的代码是否有效。

在我的测试用例中,我启动了两个线程并让它们都调用有问题的代码。线程正常返回,但似乎 postgres 数据库连接保持打开状态。

我已将整个测试用例简化为一个非常简单的示例,其中出现了问题:

    def test_threading(self):
        obj = mommy.make(self.model_class)

        def test_concurrency():
            self.model_class.objects.get(id=obj.id)

        t1 = Thread(target=test_concurrency)
        t2 = Thread(target=test_concurrency)

        t1.start()
        t2.start()

        t1.join()
        t2.join()
Run Code Online (Sandbox Code Playgroud)

在测试运行并且测试数据库被销毁后,我收到以下错误:

psycopg2.errors.ObjectInUse: database "test_db" is being accessed by other users
DETAIL:  There are 2 other sessions using the database.
Run Code Online (Sandbox Code Playgroud)

我尝试通过添加以下内容在测试用例结束时手动关闭连接:

for conn in db.connections.all():
    conn.close()
Run Code Online (Sandbox Code Playgroud)

但这似乎没有任何影响。

我使用django.test.TransactionTestCase作为我的基本 TestCase 类,Django 2.2并且PostgreSQL 10.6.

django django-testing

3
推荐指数
1
解决办法
886
查看次数

标签 统计

django ×1

django-testing ×1

python-huey ×1