Beispiel #1
0
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,
Beispiel #2
0
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:
Beispiel #3
0
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
Beispiel #4
0
 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)
Beispiel #5
0
 def __init__(self, HWM=100):
     self.gateways = {}
     self.ctx = zmq.Context()
     self.HWM = HWM
Beispiel #6
0
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)
Beispiel #7
0
 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)
Beispiel #9
0
#!/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")
Beispiel #10
0
 def __init__(self):
     context = zmq.Context()
     self.socket = context.socket(zmq.SUB)
     self.socket.setsockopt(zmq.SUBSCRIBE, '')
     self.socket.bind("tcp://*:6666")
     self.run()
Beispiel #11
0
 def __init__(self, endpoint, crypto_key=None):
     self.endpoint = endpoint
     self.context = zmq.Context()
     super(ZmqServiceProxy, self).__init__()
Beispiel #12
0
 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