1

总之,我的问题是如何轻松地将连接资源设为全局变量?具体来说,我想打开一个 Redis 队列连接,并希望在多个函数中使用它,而无需将其作为参数传递,即'

#===============================================================================
# Global variables
#===============================================================================
REDIS_QUEUE <- how to initialize

然后,在我的主要功能中,有

# Open redis queue connection to server
REDIS_QUEUE = redis.StrictRedis(host=SERVER_IP, port=6379, db=0)

然后REDIS_QUEUE在多个功能中使用,例如

def sendStatusMsgToServer(statusMsg):
    print "\nSending status message to server:"
    print simplejson.dumps(statusMsg)
    REDIS_QUEUE.rpush(TLA_DATA_CHANNEL, simplejson.dumps(statusMsg))

我以为REDIS_QUEUE = none会工作,但它给了我

AttributeError: 'NoneType' object has no attribute 'rpush'

我是 Python 新手,解决这个问题的最佳方法是什么?

4

1 回答 1

4

如果要从函数内部设置全局变量的值,则需要使用global语句。所以在你的主要功能中:

def main():
    global REDIS_QUEUE
    REDIS_QUEUE = redis.StrictRedis(host=SERVER_IP, port=6379, db=0)
    # whatever else

请注意,在执行此操作之前无需在外部“初始化”变量main,尽管您可能只想记录变量存在。

于 2013-01-30T03:37:22.273 回答