gpt4 book ai didi

python - RQ Flask Heroku worker 应用上下文

转载 作者:可可西里 更新时间:2023-11-01 11:30:39 24 4
gpt4 key购买 nike

有app.py:

app = Flask(__name__)

with app.app_context():
app.config.from_object(os.environ['APP_SETTINGS'])
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.debug = True

db.app = app
db.init_app(app)

if __name__ == '__main__':
app.run()

和 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()

和其他包含

的文件
q = Queue(connection=conn)
q.enqueue(process_data, data)

其中 process_data 是一个使用 db (sqlalchemy) 的函数

我应该如何将应用程序上下文传递给工作人员?错误是:

File "/app/.heroku/python/lib/python3.5/site-packages/flask_sqlalchemy/__init__.py", line 153, in __init__:
self.app = app = db.get_app()
RuntimeError: application not registered on db instance and no application bound to current context

最佳答案

通过将与应用程序配置相关的整个代码从 app.py 移动到 init.py(app.run() 除外)和 app.py import app 中,解决了问题并像魅力一样工作

关于python - RQ Flask Heroku worker 应用上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40611299/

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