import datetime import gevent import gevent.queue import pool import simplejson as json import urllib import urllib3 from gevent_zeromq import zmq CONTENT_FORM = 'application/x-www-form-urlencoded; charset=utf-8' CONTENT_JSON = 'application/json; charset=utf-8' DEFAULT_TIMEOUT = 15 # the pool of connections http_pool = urllib3.PoolManager(maxsize=25) context = zmq.Context() pool.zmq_socket_pool.create(context) class StellrError(Exception): """ Error that will be thrown from a Connection instance during the execution of a command. The error has the following fields available: msg: a message with information about the error url: the url that was called timeout: a boolean indicating whether a timeout occurred code: the http error code received from the remote host, or if less than 0 the remote host was never called """ def __init__(self,
from gevent import spawn, spawn_later from gevent_zeromq import zmq # server ctx = zmq.Context() sock = ctx.socket(zmq.PUSH) sock.bind('ipc:///tmp/zmqtest') spawn(sock.send_pyobj, ('this', 'is', 'a', 'python', 'tuple')) spawn_later(1, sock.send_pyobj, {'hi': 1234}) spawn_later(2, sock.send_pyobj, ({'this': ['is a more complicated object', ':)']}, 42, 42, 42)) spawn_later(3, sock.send_pyobj, 'foobar') spawn_later(4, sock.send_pyobj, 'quit') # client ctx = zmq.Context() # create a new context to kick the wheels sock = ctx.socket(zmq.PULL) sock.connect('ipc:///tmp/zmqtest') def get_objs(sock): while True: o = sock.recv_pyobj() print 'received python object:', o if o == 'quit': print 'exiting.' break def print_every(s, t=None): print s if t:
def get_or_create_zmq_context(): if getattr(current_app, "oochat_zmq", None) is None: current_app.oochat_zmq = zmq.Context() return current_app.oochat_zmq
def __init__(self, zmq_conn_string, ctx=None): self.zmq_conn_string = zmq_conn_string if ctx is None: ctx = zmq.Context() self.ctx = ctx self.socket = self.ctx.socket(zmq.XREP)
def __init__(self, HWM=100): self.gateways = {} self.ctx = zmq.Context() self.HWM = HWM
import requests def pack(msg): return msgpack.Packer().pack(msg) def unpack(msg): unpacker = msgpack.Unpacker() unpacker.feed(msg) return unpacker.unpack() def send_http(http_addr, req): packed_req = pack(list(req)) print "HTTP SEND | {0}".format(repr(packed_req)) return unpack(requests.post(http_addr, data=packed_req).content) if __name__ == '__main__': zmq_addr, http_addr = sys.argv[1:] ctx = zmq.Context() s = ctx.socket(zmq.XREP) s.bind(zmq_addr) while True: req = s.recv_multipart() print "ZMQ RECV| {0}".format(repr(req)) resp = send_http(http_addr, req) print "ZMQ SEND| {0}".format(repr(resp)) s.send_multipart(resp)
def __init__(self, app=None): self.context = zmq.Context() self.app = app self.app.server = self.context.socket(zmq.PUB) self.app.server.bind(conf.SOCK_LOCAL_SERVER) self.setup()
def _connect(self): self._log('Connecting to %s' % self._address) self._context = zmq.Context(2) self._socket = self._context.socket(zmq.REQ) self._socket.connect(self._address) self._log('Connected to %s' % self._address)
#!/usr/bin/env python #!encoding=utf8 import gevent from gevent_zeromq import zmq # Global Context context = zmq.Context() #它是GreenContext的一个简写,确保greenlet化socket def server(): server_socket = context.socket( zmq.REQ ) #创建一个socket,使用mq类型模式REQ/REP(请求/回复,服务器是请求),还有PUB/SUB(发布/订阅),push/pull等 server_socket.bind("tcp://127.0.0.1:5000") #绑定socket for request in range(1, 10): server_socket.send("Hello") print('Switched to Server for ', request) server_socket.recv() #这里发生上下文切换 def client(): client_socket = context.socket(zmq.REP) #(客户端是回复) client_socket.connect("tcp://127.0.0.1:5000") #连接server的socket端口 for request in range(1, 10): client_socket.recv() print('Switched to Client for ', request) client_socket.send("World")
def __init__(self): context = zmq.Context() self.socket = context.socket(zmq.SUB) self.socket.setsockopt(zmq.SUBSCRIBE, '') self.socket.bind("tcp://*:6666") self.run()
def __init__(self, endpoint, crypto_key=None): self.endpoint = endpoint self.context = zmq.Context() super(ZmqServiceProxy, self).__init__()
def __init__(self, publish_port=5000, pull_port=5001): context = zmq.Context() self.publish = context.socket(zmq.PUB) self.pull = context.socket(zmq.PULL) self.publish_port = publish_port self.pull_port = pull_port