如何解决将Redis用作Flask / Heroku 连接在迭代中设置值存储值并推送到数据库发生了什么
我在Heroku上有一个使用Flask / Redis / Postgres的应用程序,它在记录用户输入和计数的结果。
为克服Heroku共享资源的不足,我正在使用唯一的用户名和计数器将重要变量推送到Redis,并根据需要提取它们。
连接
# Redis Connection
HEROKU_REdis = os.getenv('REdis_URL')
redis = redis.from_url(HEROKU_REdis)
# Set User for session
USER = secrets.token_urlsafe(4) # User to store in the session.
redis.set(str(USER),USER) # Set unique user token
# Set Counter for session
COUNTER = 0
counter_id = secrets.token_urlsafe(4) # Short username is fine
redis.set(str(counter_id),COUNTER) # Set unique counter token
在迭代中设置值。
if COUNTER == 0:
generate_image() # generates the first image in the background to match reponse to image.
COUNTER += 1
redis.set(str(counter_id),COUNTER) # Set Redis Token
else:
process_answer(recorded_result) # Answer Function
write_data()
generate_image()
COUNTER += 1
redis.set(str(counter_id),COUNTER) # Set Redis Token
存储值并推送到数据库。
这存储在一个全局字典中,该字典在创建新数据时会重新构建:
def process_answer(recorded_result):
global user_data
user_data = {
'user': str(redis.get(str(USER))),'counter' : int(redis.get(str(counter_id))),'correct': 0,'near_miss' : 0,'recorded_result' : "recorded_result",}
...并推送到数据库。
发生了什么
除了重复两次外,所有这些都工作完美。 如果是计数器I,则它是1两次,然后是2两次,然后是3两次。 我一生无法理解为什么会这样。
此处为实时版本:colourdata.org
Git文件here(这是实时的CSV输出)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。