我在DigitalOcean上部署了一个FastAPI应用程序,它有多个API端点,在其中一些端点中,为了不让用户等待服务器响应,我必须使用RQ包将刮擦函数作为后台作业运行。
我已经成功地在DigitalOcean上创建了一个Redis数据库,并成功地将应用程序连接到它,但我在运行RQ工作程序时遇到了一些问题。以下是代码,灵感来自RQ的官方文档:
import redis
from rq import Worker, Queue, Connection
listen = ['high', 'default', 'low']
#connecting to DigitalOcean's redis db
REDIS_URL = os.getenv('REDIS_URL')
conn = redis.Redis.from_url(url=REDIS_URL)
#Create a RQ queue using the Redis connection
q = Queue(connection=conn)
with Connection(conn):
worker = Worker([q], connection=conn) #This instruction works fine
worker.work() #The deployment fails here, the DigitalOcean server crashes at this instruction
worker/job执行在本地运行良好,但在DO的服务器中失败。这可能是由于什么原因?我遗漏了什么,或者需要在DO的端点上进行任何类型的配置吗?
先谢谢你!
我也尝试过使用FastAPI的BackgroundTask类。起初,它运行得很顺利,但是作业中途停止运行,类本身没有关于后台发生了什么的反馈。我猜这是由于FastAPI中似乎没有自定义配置的超时(可能是因为它的后台任务应该是低成本和快速的)。
我也在考虑尝试celery ,但我担心我会遇到同样的问题作为RQ。
1条答案
按热度按时间hi3rlvi21#
使用以下命令创建配置文件:/etc/系统管理/系统管理/我的项目服务
一个月一个月一个月一个月一个月一个月一个月一个月一个月二个月一个月
x一个三个一x一个四个一x一个五个一x一个六个一x一个七个一x一个八个一x
x一个月九个月一个x一个月十个月一个x一个月十一个x一个月十一个x一个月十二个月一个x一个月十三个月一个x一个月十四个x一个月十五个
x 1米16英寸x 1米17英寸