python - AttributeError:Heroku日志上 'tuple'对象没有属性 'decode'

标签 python flask heroku redis

运行heroku logs --tail时出现此错误。

我在heroku应用程序上实现RedisToGo,我注意到当我在代码中添加"REDISTOGO_URL"时,它将返回此错误。我真的不知道为什么当我添加它会破坏我的整个代码。我在没有"REDISTOGO_URL"的情况下运行它,但意识到我需要在我的应用程序上才能正常工作,谢谢。

这是我的代码:

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

app.config["SESSION_FILE_DIR"] = mkdtemp()
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "redis"
app.config["SESSION_REDIS"] = redis

sess = Session()
sess.init_app(app)

这是整个错误代码:
2020-06-02T21:29:55.662911+00:00 app[web.1]: connection_pool = ConnectionPool.from_url(url, db=db, **kwargs)
2020-06-02T21:29:55.662912+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/redis/connection.py", line 995, in from_url
2020-06-02T21:29:55.662912+00:00 app[web.1]: url = urlparse(url)
2020-06-02T21:29:55.662912+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/urllib/parse.py", line 372, in urlparse
2020-06-02T21:29:55.662913+00:00 app[web.1]: url, scheme, _coerce_result = _coerce_args(url, scheme)
2020-06-02T21:29:55.662913+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/urllib/parse.py", line 124, in _coerce_args
2020-06-02T21:29:55.662913+00:00 app[web.1]: return _decode_args(args) + (_encode_result,)
2020-06-02T21:29:55.662914+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/urllib/parse.py", line 108, in _decode_args
2020-06-02T21:29:55.662914+00:00 app[web.1]: return tuple(x.decode(encoding, errors) if x else '' for x in args)
2020-06-02T21:29:55.662914+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/urllib/parse.py", line 108, in <genexpr>
2020-06-02T21:29:55.662915+00:00 app[web.1]: return tuple(x.decode(encoding, errors) if x else '' for x in args)
2020-06-02T21:29:55.662916+00:00 app[web.1]: AttributeError: 'tuple' object has no attribute 'decode'

最佳答案

这仅适用于os.getenv的调用,例如:

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

这是每个:https://devcenter.heroku.com/articles/redistogo

当环境没有名为'redis://localhost:6379'的变量时,将使用第二个值REDISTOGO_URL

您可以运行heroku config -a your_app_name_here来查看是否设置了REDISTOGO_URL

关于python - AttributeError:Heroku日志上 'tuple'对象没有属性 'decode',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62161834/

相关文章:

python - 获取 Gtk TreeView 的行号

postgresql - 无法添加 heroku-postgres 插件

java - 使用 Heroku,如何在部署应用程序时自动启动未绑定(bind)到端口的 Java 应用程序?

python - nginx proxy_set_header 不起作用

Flask-登录密码重置

javascript - Python Flask 使用按钮调用函数

java - 如何使用 mysql 解决 Spring Boot 应用程序上的 "Communications link failure"问题?

Python 相当于 Ruby 的 ||=

python - 如何在 Google Colab GPU 中安装 CUDA

python - 无法预测 fastai 的输出