本文整理汇总了Python中gnsq.Nsqd类的典型用法代码示例。如果您正苦于以下问题:Python Nsqd类的具体用法?Python Nsqd怎么用?Python Nsqd使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Nsqd类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_multipublish
def test_multipublish():
@mock_server
def handle(socket, address):
assert socket.recv(4) == ' V2'
assert socket.recv(11) == 'MPUB topic\n'
size = nsq.unpack_size(socket.recv(4))
data = socket.recv(size)
head, data = data[:4], data[4:]
assert nsq.unpack_size(head) == 2
for _ in xrange(2):
head, data = data[:4], data[4:]
assert nsq.unpack_size(head) == 3
head, data = data[:3], data[3:]
assert head == 'sup'
assert data == ''
with handle as server:
conn = Nsqd(address='127.0.0.1', tcp_port=server.server_port)
conn.connect()
conn.multipublish('topic', ['sup', 'sup'])
示例2: test_backoff
def test_backoff():
with NsqdIntegrationServer() as server:
conn = Nsqd(
address=server.address,
tcp_port=server.tcp_port,
http_port=server.http_port,
)
for _ in range(500):
conn.publish_http('test', 'danger zone!')
reader = Reader(
topic='test',
channel='test',
nsqd_tcp_addresses=[server.tcp_address],
max_in_flight=100,
message_handler=lambda reader, message: None
)
reader.start(block=False)
reader.start_backoff()
assert reader.state == states.THROTTLED
assert reader.total_in_flight_or_ready <= 1
reader.complete_backoff()
assert reader.state == states.RUNNING
示例3: test_random_ready_conn
def test_random_ready_conn():
conn_1 = Nsqd('nsq1')
conn_2 = Nsqd('nsq2')
reader = Reader('test', 'test', 'localhost:4150')
reader.max_in_flight = 2
reader.conns = [conn_2]
reader.last_random_ready = 0
assert reader.random_ready_conn(conn_1) is conn_1
assert reader.last_random_ready == 0
reader.max_in_flight = 1
reader.conns = [conn_2, conn_2]
reader.last_random_ready = last_random_ready = time.time()
assert reader.random_ready_conn(conn_1) is conn_1
assert reader.last_random_ready == last_random_ready
reader.max_in_flight = 1
reader.conns = [conn_2, conn_2]
reader.last_random_ready = 0
assert reader.random_ready_conn(conn_1) is conn_2
assert reader.last_random_ready != 0
reader.max_in_flight = 1
reader.conns = [conn_2, conn_2]
reader.last_random_ready = 0
conn_2.ready_count = 1
assert reader.random_ready_conn(conn_1) is conn_1
assert reader.last_random_ready == 0
示例4: _
def _(server1, server2):
class Accounting(object):
count = 0
total = 100
concurrency = 0
error = None
for server in (server1, server2):
conn = Nsqd(
address=server.address,
tcp_port=server.tcp_port,
http_port=server.http_port,
)
for _ in xrange(Accounting.total / 2):
conn.publish_http('test', 'danger zone!')
reader = Reader(
topic='test',
channel='test',
nsqd_tcp_addresses=[
server1.tcp_address,
server2.tcp_address,
],
max_in_flight=5,
max_concurrency=1,
)
@reader.on_exception.connect
def error_handler(reader, message, error):
if isinstance(error, NSQSocketError):
return
Accounting.error = error
reader.close()
@reader.on_message.connect
def handler(reader, message):
assert message.body == 'danger zone!'
assert Accounting.concurrency == 0
Accounting.concurrency += 1
gevent.sleep()
Accounting.concurrency -= 1
Accounting.count += 1
if Accounting.count == Accounting.total:
reader.close()
try:
reader.start()
except NSQSocketError:
pass
if Accounting.error:
raise Accounting.error
assert Accounting.count == Accounting.total
示例5: test_command
def test_command(command, args, resp):
@mock_server
def handle(socket, address):
assert socket.recv(4) == ' V2'
assert socket.recv(len(resp)) == resp
with handle as server:
conn = Nsqd(address='127.0.0.1', tcp_port=server.server_port)
conn.connect()
getattr(conn, command)(*args)
示例6: test_publish
def test_publish():
@mock_server
def handle(socket, address):
assert socket.recv(4) == ' V2'
assert socket.recv(10) == 'PUB topic\n'
assert nsq.unpack_size(socket.recv(4)) == 3
assert socket.recv(3) == 'sup'
with handle as server:
conn = Nsqd(address='127.0.0.1', tcp_port=server.server_port)
conn.connect()
conn.publish('topic', 'sup')
示例7: test_sync_heartbeat
def test_sync_heartbeat():
@mock_server
def handle(socket, address):
assert socket.recv(4) == ' V2'
socket.send(mock_response(nsq.FRAME_TYPE_RESPONSE, '_heartbeat_'))
assert socket.recv(4) == 'NOP\n'
with handle as server:
conn = Nsqd(address='127.0.0.1', tcp_port=server.server_port)
conn.connect()
frame, data = conn.read_response()
assert frame == nsq.FRAME_TYPE_RESPONSE
assert data == '_heartbeat_'
示例8: test_error
def test_error(error_msg, error, fatal):
@mock_server
def handle(socket, address):
assert socket.recv(4) == ' V2'
socket.send(mock_response(nsq.FRAME_TYPE_ERROR, error_msg))
with handle as server:
conn = Nsqd(address='127.0.0.1', tcp_port=server.server_port)
conn.connect()
frame, resp = conn.read_response()
assert frame == nsq.FRAME_TYPE_ERROR
assert isinstance(resp, getattr(errors, error))
assert conn.is_connected != fatal
示例9: test_messages
def test_messages():
with NsqdIntegrationServer() as server:
class Accounting(object):
count = 0
total = 500
error = None
conn = Nsqd(
address=server.address,
tcp_port=server.tcp_port,
http_port=server.http_port,
)
for _ in xrange(Accounting.total):
conn.publish_http('test', 'danger zone!')
reader = Reader(
topic='test',
channel='test',
nsqd_tcp_addresses=[server.tcp_address],
max_in_flight=100,
)
@reader.on_exception.connect
def error_handler(reader, message, error):
if isinstance(error, NSQSocketError):
return
Accounting.error = error
reader.close()
@reader.on_message.connect
def handler(reader, message):
assert message.body == 'danger zone!'
Accounting.count += 1
if Accounting.count == Accounting.total:
assert not reader.is_starved
reader.close()
try:
reader.start()
except NSQSocketError:
pass
if Accounting.error:
raise Accounting.error
assert Accounting.count == Accounting.total
示例10: _
def _(server1, server2):
class Accounting(object):
count = 0
total = 500
concurrency = 0
error = None
for server in (server1, server2):
conn = Nsqd(
address=server.address,
tcp_port=server.tcp_port,
http_port=server.http_port,
)
for _ in range(Accounting.total // 2):
conn.publish_http('test', b'danger zone!')
reader = Reader(
topic='test',
channel='test',
lookupd_http_addresses=lookupd_server.http_address,
max_in_flight=32,
)
@reader.on_exception.connect
def error_handler(reader, message, error):
if isinstance(error, NSQSocketError):
return
Accounting.error = error
reader.close()
@reader.on_message.connect
def handler(reader, message):
assert message.body == b'danger zone!'
Accounting.count += 1
if Accounting.count == Accounting.total:
reader.close()
gevent.sleep(0.1)
reader.start()
if Accounting.error:
raise Accounting.error
assert Accounting.count == Accounting.total
示例11: test_identify
def test_identify():
@mock_server
def handle(socket, address):
assert socket.recv(4) == ' V2'
assert socket.recv(9) == 'IDENTIFY\n'
size = nsq.unpack_size(socket.recv(4))
data = json.loads(socket.recv(size))
assert 'gnsq' in data['user_agent']
socket.send(mock_response(nsq.FRAME_TYPE_RESPONSE, 'OK'))
with handle as server:
conn = Nsqd(address='127.0.0.1', tcp_port=server.server_port)
conn.connect()
assert conn.identify() is None
示例12: test_sync_receive_messages
def test_sync_receive_messages():
@mock_server
def handle(socket, address):
assert socket.recv(4) == ' V2'
assert socket.recv(9) == 'IDENTIFY\n'
size = nsq.unpack_size(socket.recv(4))
data = json.loads(socket.recv(size))
assert isinstance(data, dict)
socket.send(mock_response(nsq.FRAME_TYPE_RESPONSE, 'OK'))
msg = 'SUB topic channel\n'
assert socket.recv(len(msg)) == msg
socket.send(mock_response(nsq.FRAME_TYPE_RESPONSE, 'OK'))
for i in xrange(10):
assert socket.recv(6) == 'RDY 1\n'
body = json.dumps({'data': {'test_key': i}})
ts = i * 1000 * 1000
socket.send(mock_response_message(ts, i, i, body))
with handle as server:
conn = Nsqd(address='127.0.0.1', tcp_port=server.server_port)
conn.connect()
assert conn.identify() is None
conn.subscribe('topic', 'channel')
frame, data = conn.read_response()
assert frame == nsq.FRAME_TYPE_RESPONSE
assert data == 'OK'
for i in xrange(10):
conn.ready(1)
frame, msg = conn.read_response()
assert frame == nsq.FRAME_TYPE_MESSAGE
assert isinstance(msg, Message)
assert msg.timestamp == i * 1000 * 1000
assert msg.id == '%016d' % i
assert msg.attempts == i
assert json.loads(msg.body)['data']['test_key'] == i
示例13: test_negotiation
def test_negotiation():
@mock_server
def handle(socket, address):
assert socket.recv(4) == b' V2'
assert socket.recv(9) == b'IDENTIFY\n'
size = nsq.unpack_size(socket.recv(4))
data = json.loads(socket.recv(size).decode('utf-8'))
assert 'gnsq' in data['user_agent']
resp = six.b(json.dumps({'test': 42}))
socket.send(mock_response(nsq.FRAME_TYPE_RESPONSE, resp))
with handle as server:
conn = Nsqd(address='127.0.0.1', tcp_port=server.server_port)
conn.connect()
assert conn.identify()['test'] == 42
示例14: test_disconnected
def test_disconnected():
@mock_server
def handle(socket, address):
assert socket.recv(4) == ' V2'
assert socket.recv(1) == ''
with handle as server:
conn = Nsqd(address='127.0.0.1', tcp_port=server.server_port)
conn.connect()
conn.close_stream()
assert conn.state == states.DISCONNECTED
with pytest.raises(errors.NSQSocketError):
conn.nop()
with pytest.raises(errors.NSQSocketError):
conn.read_response()
示例15: test_identify_auth
def test_identify_auth():
@mock_server
def handle(socket, address):
assert socket.recv(4) == ' V2'
assert socket.recv(9) == 'IDENTIFY\n'
size = nsq.unpack_size(socket.recv(4))
data = json.loads(socket.recv(size))
assert 'gnsq' in data['user_agent']
resp = json.dumps({'auth_required': True})
socket.send(mock_response(nsq.FRAME_TYPE_RESPONSE, resp))
assert socket.recv(5) == 'AUTH\n'
assert nsq.unpack_size(socket.recv(4)) == 6
assert socket.recv(6) == 'secret'
resp = json.dumps({'identity': 'awesome'})
socket.send(mock_response(nsq.FRAME_TYPE_RESPONSE, resp))
with handle as server:
conn = Nsqd(
address='127.0.0.1',
tcp_port=server.server_port,
auth_secret='secret'
)
@conn.on_auth.connect
def assert_auth(conn, response):
assert assert_auth.was_called is False
assert_auth.was_called = True
assert response['identity'] == 'awesome'
assert_auth.was_called = False
conn.connect()
resp = conn.identify()
assert resp['auth_required']
assert assert_auth.was_called