Skip to content

Instantly share code, notes, and snippets.

@bergundy
Created August 7, 2012 10:09
Show Gist options
  • Save bergundy/3284201 to your computer and use it in GitHub Desktop.
Save bergundy/3284201 to your computer and use it in GitHub Desktop.
Pika reconnect test
import os
import pika
from time import sleep
from subprocess import check_call, call, check_output
from pika.spec import PORT as DEFAULT_PORT
from pika.reconnection_strategies import SimpleReconnectionStrategy
#from pika.adapters.select_connection import SelectConnection as Connection
from pika.adapters.tornado_connection import TornadoConnection as Connection
rabbitmq_sbin_dir = "/opt/erlang/rabbitmq_server-2.7.1/sbin/"
rabbitmq_start_cmd = [ rabbitmq_sbin_dir + "rabbitmq-server", "-detached" ]
rabbitmqctl_cmd = [ rabbitmq_sbin_dir + "rabbitmqctl" ]
rabbitmq_stop_cmd = rabbitmqctl_cmd + [ "stop" ]
path = "/opt/erlang/bin/"
def rabbitmqctl(cmd):
env = os.environ.copy()
env['PATH'] = path + ':' + env['PATH']
return check_output(rabbitmqctl_cmd + cmd, env=env)
def start_rabbitmq():
env = os.environ.copy()
env['PATH'] = path + ':' + env['PATH']
try:
call(rabbitmq_start_cmd, env=env)
sleep(1)
except:
pass
def stop_rabbitmq():
env = os.environ.copy()
env['PATH'] = path + ':' + env['PATH']
try:
check_call(rabbitmq_stop_cmd, env=env)
sleep(1)
except:
pass
def kill_rabbitmq():
import signal, re
out = rabbitmqctl(["status"])
pid = int(re.search(r"\[\{pid,(\d+)", out).group(1))
os.kill(pid, signal.SIGKILL)
params = pika.ConnectionParameters(
host = 'localhost',
port = DEFAULT_PORT,
virtual_host = '/',
heartbeat = True
)
def on_connected(conn):
print "*" * 80
print "connected", conn
print "*" * 80
stop_rabbitmq()
start_rabbitmq()
pika.log.setup(level=pika.log.DEBUG, color=True)
start_rabbitmq()
conn = Connection(params, on_connected, SimpleReconnectionStrategy())
conn.ioloop.start()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment