问题标签 [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 不在 Django 中调用任务
我有一个 Django 休息框架应用程序,它在序列化程序创建方法中连续调用 2 个 Huey 任务,如下所示:
在终端中运行 huey 进程时,当我点击这个端点时,我可以看到只有一个或另一个任务被调用,但从来没有两个。我正在使用默认设置运行 huey(带有 1 个线程工作者的 redis。)
如果我更改代码以便将对象本身作为参数而不是 ids 传递,并删除@db_task
方法中的 django 查询,事情似乎工作正常。
我最初使用 ids 作为参数的原因是因为我假设(或在某处读到)huey 使用 json 序列化作为默认值,但在研究之后,pickle
它实际上是默认序列化程序。
一种理论是,由于我只运行一个工作者,并且@db_periodic_task
在应用程序中也有一个方法,因此该进程只能处理侦听任务或随时执行它们,但不能同时处理两者。这就是 celery 的工作方式,您需要为调度程序和工作人员分别设置一个单独的进程,但这在 huey 的文档中没有提到。
python - 使用队列时如何加快 GET 请求
我正在使用 Huey/Hueyx 作为队列来缓冲我需要使用 pythons 请求库获取的资源。凭证(一个令牌)存储在 Redis 中,任务执行器调用该函数,获取资源,然后将其索引到弹性搜索。因为我需要请求数百万个不同的资源,而我的解决方案非常慢(每分钟大约 5k 个请求),所以队列很快备份并且性能受到影响。
我的问题是:我怎样才能通过一些简单的步骤更快地完成整个考验?添加更多消费者始终是一种选择,但在探索其他选择之前,我现在不想这样做。我读过异步代码,但看起来它会使代码的复杂性增加四倍。另外,我对异步编程模型一无所知。
python - django huey 在过滤时总是返回空查询集
如果我在没有 django-huey 的 django 中运行它,我会得到一个过滤的查询集,但是如果我开始使用 django-huey,我总是会得到一个空的查询集。只有“DBAccess”被打印,文件总是“[]”。
我是否必须在 settings.py 中添加其他设置?这是我当前的 Huey 设置
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。
我的代码类似于该建议。我会感谢任何贡献。提前致谢
django - Huey 任务不是从 django 视图运行,而是从 shell 运行
我遇到了一个问题,想知道可能出了什么问题。
问题
从 Web 视图调用时,Huey 任务未运行。但是,当从同一 VM 的 shell 命令调用时,它运行良好。任务在 huey 上注册得很好。有问题的任务是handshake
。
- 虚拟机:Web,使用视图:不工作
- 虚拟机:Web,使用 Shell:工作
- VM:工人,使用外壳:工作
设置
我正在docker中运行一个应用程序。运行两个具有完全相同设置的相同图像实例,连接到相同的 redis 和相同的 postgres。我已经验证两个实例都连接到同一个 Redis。
这两个实例是:
web.1
:以正常线程模式运行 gunicorn Web 应用程序。worker.1
: 跑步python manage.py run_huey
设置
任务
这是显示任务已注册的 run_huey 的输出(为清楚起见删除了一些行)。
测试一:调用的网页handshake
网络日志中的输出:
工作日志中没有记录任何内容。
handshake
测试 2:从运行 web 的同一实例调用 Django Shell
在工作人员日志中:
那么我错过了什么?我是否需要在 App config 中添加一些代码来加载任务?我什至尝试run_huey
在web.1
实例上运行但同样的问题。所以它不是环境,不是redis。我猜它与网络没有连接到redis有关。
如果可以,请帮忙。我只是不确定我错过了什么。
谢谢阿米特
python - 如何在huey上运行多个带有参数的任务?
我做了类似于芹菜的设置
功能
启动任务
结果:
一切正常,但只完成最后一项任务。
我需要这种启动方式。在生产中,在包装器中,任务将在线程中启动。
有人可以有任何想法吗?
python - 发出停止长时间运行的 Huey 任务的信号
我正在使用 Huey 对 Django 应用程序中的对象执行一些处理操作。
这是我希望解决的情况的简化示例。我有一个模型,它存储了需要处理Album
的各种数量。Images
处理操作定义在一个用@task
装饰器包装的不同函数中,因此它能够同时运行(当工人数量> 1时)。
问题是如何以album.should_pause()
正确的方式实施。当前的实现如下所示:
因此,在每次迭代中,都会查询数据库以更新模型,以确保该state
字段没有更改为 以外的其他AlbumProcessingState.RUNNING
值,这表明专辑处理任务应该中断。
虽然它有效,但感觉不对,因为我必须在每次迭代时从数据库中更新模型,但这些感觉可能是错误的。你怎么看?
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 天后重复)
有一个更好的方法吗? 感谢您的帮助。
python - 从代码启动进程消费者并获取信号回调
如何从 CPU 绑定任务的代码开始处理消费者?
我怎样才能在没有立即的情况下获得信号回调?如果我使用 immediate=True 运行 MemoryHuey 一切正常,但如果我将其设置为 False,我只会得到空列表。
问题:
我有几个端点必须以不同的优先级进行处理。这些进程都是 CPU 密集型的,必须移动到后台并使用多处理进行处理。Redis 集群稍后用作作业存储。
谢谢:) PS:忽略异步
编辑:或者是否有一个简单的解决方案可以在 AWS EB 中与主管一起运行?
编辑:我使用 ElasticBeanstalk 进行部署/与主管一起运行?