python - AttributeError:“元组”对象在 Heroku 日志中没有“解码”属性
问题描述
运行时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
设置好了。
推荐阅读
- java - 我的第一个代码问题!学习 Java 并需要帮助对数组执行基本统计信息
- atom-editor - Atom 功能键绑定。如何绑定 F5 将所选文本的大小写更改为大写
- linux - 为 mmap() 内存手动触发页面错误,用于长序列的随机读取
- javascript - How do I print out json data
- webots - 在 Webots 中编写机器人代码
- azure-devops - 您如何将 PBI 从一个 sprint 移动到另一个 sprint 并将其反映到 Rolling up 状态
- swift - 使用 Swift Enum 时,Objective-C 方法在 Swift 中不可见
- mysql - 如何检查sql表中列的所有条目是否为空?
- curve-fitting - 用于 msc ADAMS 软件中强加运动的样条拟合
- snowflake-cloud-data-platform - 对不同值求和