【问题标题】:AttributeError: 'tuple' object has no attribute 'decode' on Heroku logsAttributeError:“元组”对象在 Heroku 日志中没有“解码”属性
【发布时间】:2020-09-21 12:02:41
【问题描述】:

运行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'

【问题讨论】:

    标签: python flask heroku redis


    【解决方案1】:

    这仅适用于调用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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 2016-05-22
      • 2021-07-30
      • 2013-07-29
      • 2020-08-29
      • 2015-04-22
      相关资源
      最近更新 更多