微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将Redis用作Flask / Heroku 连接在迭代中设置值存储值并推送到数据库发生了什么

如何解决将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输出)。

任何有关为什么会发生这种情况的线索将不胜感激。

screenshot

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。