Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pythonredispubsub:当类型被发布时会发生什么?_Python_Redis_Redis Py - Fatal编程技术网

pythonredispubsub:当类型被发布时会发生什么?

pythonredispubsub:当类型被发布时会发生什么?,python,redis,redis-py,Python,Redis,Redis Py,酒吧 输出: import redis import datetime import time def main(): redis_host = '10.235.13.29' r = redis.client.StrictRedis(host=redis_host, port=6379) while True: now = datetime.datetime.now() print 'Sending {0}

酒吧

输出:

import redis
import datetime
import time

def main():
    redis_host = '10.235.13.29'
        r = redis.client.StrictRedis(host=redis_host, port=6379)
        while True:
            now = datetime.datetime.now()
            print 'Sending {0}'.format(now)
            print 'data type is %s' % type(now)
            r.publish('clock', now)
            time.sleep(1)

if __name__ == '__main__':
  main()
import redis
import threading
import time
import datetime

def callback():
    redis_host = '10.235.13.29'
    r = redis.client.StrictRedis(host=redis_host, port=6379)
    sub = r.pubsub()
    sub.subscribe('clock')
    while True:
        for m in sub.listen():
            #print m #'Recieved: {0}'.format(m['data'])
            now = datetime.datetime.now()
            print 'Recieved: %s at %s' % (m['data'], now)
            print 'Data type is %s' % type(m['data'])
            dur = 1
            print 'It took %s to receive' % dur

def main():
    t = threading.Thread(target=callback)
    t.setDaemon(True)
    t.start()
    while True:
        print 'Waiting'
        time.sleep(30)

if __name__ == '__main__':
    main()
输出:

import redis
import datetime
import time

def main():
    redis_host = '10.235.13.29'
        r = redis.client.StrictRedis(host=redis_host, port=6379)
        while True:
            now = datetime.datetime.now()
            print 'Sending {0}'.format(now)
            print 'data type is %s' % type(now)
            r.publish('clock', now)
            time.sleep(1)

if __name__ == '__main__':
  main()
import redis
import threading
import time
import datetime

def callback():
    redis_host = '10.235.13.29'
    r = redis.client.StrictRedis(host=redis_host, port=6379)
    sub = r.pubsub()
    sub.subscribe('clock')
    while True:
        for m in sub.listen():
            #print m #'Recieved: {0}'.format(m['data'])
            now = datetime.datetime.now()
            print 'Recieved: %s at %s' % (m['data'], now)
            print 'Data type is %s' % type(m['data'])
            dur = 1
            print 'It took %s to receive' % dur

def main():
    t = threading.Thread(target=callback)
    t.setDaemon(True)
    t.start()
    while True:
        print 'Waiting'
        time.sleep(30)

if __name__ == '__main__':
    main()
{}:./sub.py
等待
收到日期:2014-10-08 13:09:36.708088时1分
数据类型为
我花了1分钟才收到
收到日期:2014-10-08 13:09:37.629664于2014-10-08 13:09:37.630479
数据类型为
我花了1分钟才收到
收到日期:2014-10-08 13:09:38.630661于2014-10-08 13:09:38.631585
数据类型为
我花了1分钟才收到
收到日期:2014-10-08 13:09:39.632663于2014-10-08 13:09:39.633480
数据类型为
我花了1分钟才收到
收到日期:2014-10-08 13:09:40.633662于2014-10-08 13:09:40.634464
数据类型为
我花了1分钟才收到
收到日期:2014-10-08 13:09:41.634665于2014-10-08 13:09:41.635557
数据类型为
我花了1分钟才收到
收到日期:2014-10-08 13:09:42.635662于2014-10-08 13:09:42.636673
数据类型为
我花了1分钟才收到
收到日期:2014-10-08 13:09:43.642665于2014-10-08 13:09:43.643441
数据类型为
我花了1分钟才收到
收到日期:2014-10-08 13:09:44.643663于2014-10-08 13:09:44.644582
数据类型为
我花了1分钟才收到
收到日期:2014-10-08 13:09:45.644667于2014-10-08 13:09:45.673734
数据类型为
我花了1分钟才收到
收到日期:2014-10-08 13:09:46.672918于2014-10-08 13:09:46.673874
数据类型为
我花了1分钟才收到
收到日期:2014-10-08 13:09:47.673913于2014-10-08 13:09:47.675014
数据类型为
我花了1分钟才收到
收到日期:2014-10-08 13:09:48.674920于2014-10-08 13:09:48.675804
数据类型为
我花了1分钟才收到
收到日期:2014-10-08 13:09:49.675912于2014-10-08 13:09:49.677346
数据类型为
类型从datetime.datetime更改为str
是否可以保留该类型,因为我正在尝试查找无法将datetime obj减去str的持续时间

我认为您必须序列化已发布通道中的datetime对象,然后在读取sub时反序列化

我注意到您已经对解决方案发表了评论:)


编辑:

您可以在密钥中存储epoch秒,避免序列化!(如果只发布日期时间)