请问通过 dict.get(xxxx,'None')这种操作获得字典中的数据的时候,为什么会出现时有时无的情况?

2018-10-25 13:12:51 +08:00
 danzzzz

就是我一开始定义了一个 session = {},紧接着通过 session['a'] = 1 的方式给字典赋值, 然后在 get 的过程中,出现了有时候拿到了数据,有时候返回 None 的情况,不得其解。 麻烦大家了,先感谢各位的解答。

3377 次点击
所在节点    Python
24 条回复
danzzzz
2018-10-25 17:35:15 +08:00
@Rand01ph 这个是放在服务器上跑的。
danzzzz
2018-10-25 17:36:56 +08:00
@anonymous256 不好意思,请问放到代码中的时候是这样子吗?
'''
....上面的代码省略

import logging

logger = logging.getLogger('my_logger')
logger.setLevel(logging.INFO)
file_handler = logging.FileHandler(filename='我的小程序日志.log')
formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] ' +
'%(levelname)s %(message)s')
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)

class Todolist(Resource):
#用户进入页面后将该用户所有的待办事项返回给前端渲染到页面
def get(self,rdSession):
global session
logging.info(str(session))
openid = session.get(rdSession,None) #通过前端发送过来的随机串 key 得到对应的 value
logging.info(str(session))
xpresslink
2018-10-25 17:46:54 +08:00
请问楼主这个代码是多进程方式部署的么?
重要的事情说三遍:
每个进程中的变量是相互隔离的。
每个进程中的变量是相互隔离的。
每个进程中的变量是相互隔离的。

进程是并发执行的,进程之间默认是不能共享全局变量的。如果要共享全局变量需要用
( multiprocessing.Value("d",10.0),数值)
( multiprocessing.Array("i",[1,2,3,4,5]),数组)
( multiprocessing.Manager().dict(),字典)
( multiprocessing.Manager().list(range(5)))。
进程通信(进程之间传递数据)用进程队列( multiprocessing.Queue(),单向通信),
管道( multiprocessing.Pipe() ,双向通信)。

或者用个 redis 服务来保存 kv
vipppppp
2018-10-26 09:46:08 +08:00
这是个 flask 服务吗 ==

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/501009

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX