4

これがPythonでダウンしているときに、memcachedでエラーをキャッチしようとしています:

import memcache
import socket
mc = memcache.Client(['127.0.0.1:11211'], debug=1)

try:
    print mc.get('gfdsgf')
except socket.error:
   print 'error'

しかし、コンソールにまだこのエラーがあります:

MemCached: MemCache: inet:127.0.0.1:11211: connect: Connection refused.  Marking dead.
None
4

1 に答える 1

2

これは実際にはキャッチできるエラーではありません。これは単なるログであり、debug パラメータが 1 に設定されているために表示されるので、debug パラメータをオフにします。そして、あなたが見ることができるように、あなたのプリントからまだ None を取得します。これは、キーが存在しないことを意味します

そのようなことを試してください:

import memcache
mc = memcache.Client(['127.0.0.1:11211'], debug=0)
try:
    print mc.get('gfdsgf')
except (mc.MemcachedKeyTypeError, mc.MemcachedKeyNoneError,
                    TypeError, mc.MemcachedKeyCharacterError,
                    mc.MemcachedKeyError, mc.MemcachedKeyLengthError,
                    mc.MemcachedStringEncodingError):
   print 'error'
于 2013-08-06T16:49:35.203 に答える