gpt4 book ai didi

python - 仅使用 1 个 web dyno 和 0 个 worker dyno 运行 Heroku 后台任务

转载 作者:IT老高 更新时间:2023-10-28 20:29:13 24 4
gpt4 key购买 nike

我在 Heroku 上有一个 Python Flask 应用程序,它提供网页服务,但也允许启动某些任务,我认为这些任务最好构造为后台任务。因此,我关注了 Heroku rq tutorial设置后台任务。我的 Procfile 看起来像这样:

web: python app.py
worker: python worker.py

但是,我的流程目前是按比例缩放的 web=1 worker=0。鉴于此后台进程不会经常运行,因此为它提供整个测功机然后为那么小的东西每月支付 34 美元对我来说似乎是不明智的。

问题:

  • 如果我保留在我的 Procfile 中声明的 worker 进程但将缩放保持在 web=1 worker=0,我的排队进程最终会在我可用的网络上运行吗测功机?或者排队的进程永远不会运行?
  • 如果排队的进程永远不会运行,是否有其他方法可以做到这一点,例如,在我的网络应用中使用 twisted 来异步运行任务?

其他信息

worker.py 看起来像这样:

import os
import redis
from rq import Worker, Queue, Connection

listen = ['high', 'default', 'low']

redis_url = os.getenv('REDISTOGO_URL', 'redis://localhost:6379')

conn = redis.from_url(redis_url)

if __name__ == '__main__':
with Connection(conn):
worker = Worker(map(Queue, listen))
worker.work()

主应用程序中将进程排入队列的逻辑如下所示:

from rq import Queue
from worker import conn
q = Queue(connection=conn)

q.enqueue(myfunction, myargument)

最佳答案

修改 Procfile 如下所示:

web: bin/web

现在创建 bin 目录,并创建文件 bin/web 如下所示:

#!/bin/bash
python app.py &
python worker.py

确保你给这个文件可执行权限:

$ chmod +x bin/web

关于python - 仅使用 1 个 web dyno 和 0 个 worker dyno 运行 Heroku 后台任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12634447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com