本文整理汇总了Python中pika.URLParameters方法的典型用法代码示例。如果您正苦于以下问题:Python pika.URLParameters方法的具体用法?Python pika.URLParameters怎么用?Python pika.URLParameters使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pika
的用法示例。
在下文中一共展示了pika.URLParameters方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: create_rabbitmq_resources
# 需要导入模块: import pika [as 别名]
# 或者: from pika import URLParameters [as 别名]
def create_rabbitmq_resources(rabbit_amqp_url, executor_id, job_id):
"""
Creates RabbitMQ queues and exchanges of a given job in a thread.
Called when a job is created.
"""
logger.debug('ExecutorID {} | JobID {} - Creating RabbitMQ resources'.format(executor_id, job_id))
def create_resources(rabbit_amqp_url, executor_id, job_id):
exchange = 'pywren-{}-{}'.format(executor_id, job_id)
queue_0 = '{}-0'.format(exchange) # For waiting
queue_1 = '{}-1'.format(exchange) # For invoker
params = pika.URLParameters(rabbit_amqp_url)
connection = pika.BlockingConnection(params)
channel = connection.channel()
channel.exchange_declare(exchange=exchange, exchange_type='fanout', auto_delete=True)
channel.queue_declare(queue=queue_0, auto_delete=True)
channel.queue_bind(exchange=exchange, queue=queue_0)
channel.queue_declare(queue=queue_1, auto_delete=True)
channel.queue_bind(exchange=exchange, queue=queue_1)
connection.close()
th = threading.Thread(target=create_resources, args=(rabbit_amqp_url, executor_id, job_id))
th.daemon = True
th.start()
示例2: delete_rabbitmq_resources
# 需要导入模块: import pika [as 别名]
# 或者: from pika import URLParameters [as 别名]
def delete_rabbitmq_resources(rabbit_amqp_url, executor_id, job_id):
"""
Deletes RabbitMQ queues and exchanges of a given job.
Only called when an exception is produced, otherwise resources are
automatically deleted.
"""
exchange = 'pywren-{}-{}'.format(executor_id, job_id)
queue_0 = '{}-0'.format(exchange) # For waiting
queue_1 = '{}-1'.format(exchange) # For invoker
params = pika.URLParameters(rabbit_amqp_url)
connection = pika.BlockingConnection(params)
channel = connection.channel()
channel.queue_delete(queue=queue_0)
channel.queue_delete(queue=queue_1)
channel.exchange_delete(exchange=exchange)
connection.close()
示例3: _job_monitor_thread
# 需要导入模块: import pika [as 别名]
# 或者: from pika import URLParameters [as 别名]
def _job_monitor_thread(job_key, total_calls, rabbit_amqp_url, job_monitor_q):
executor_id, job_id = job_key.rsplit('-', 1)
exchange = 'pywren-{}-{}'.format(executor_id, job_id)
queue_0 = '{}-0'.format(exchange)
total_calls_rcvd = 0
def callback(ch, method, properties, body):
nonlocal total_calls_rcvd
call_status = json.loads(body.decode("utf-8"))
job_monitor_q.put(call_status)
if call_status['type'] == '__end__':
total_calls_rcvd += 1
if total_calls_rcvd == total_calls:
ch.stop_consuming()
logger.debug('ExecutorID {} | JobID {} - Consuming from RabbitMQ '
'queue'.format(executor_id, job_id))
params = pika.URLParameters(rabbit_amqp_url)
connection = pika.BlockingConnection(params)
channel = connection.channel()
channel.basic_consume(callback, queue=queue_0, no_ack=True)
channel.start_consuming()
示例4: run
# 需要导入模块: import pika [as 别名]
# 或者: from pika import URLParameters [as 别名]
def run(self):
while True:
try:
# Connect the broker
self.pika_connection = pika.BlockingConnection(
pika.URLParameters(self.uri)
)
self.channel = self.pika_connection.channel()
self.channel.basic_consume(
queue=self.queue_name, on_message_callback=self._process_message
)
self.channel.start_consuming()
except (KeyboardInterrupt, SystemExit):
self.helper.log_info("Connector stop")
exit(0)
except Exception as e:
self.helper.log_error(str(e))
time.sleep(10)
示例5: _send_status_rabbitmq
# 需要导入模块: import pika [as 别名]
# 或者: from pika import URLParameters [as 别名]
def _send_status_rabbitmq(self):
"""
Send the status event to RabbitMQ
"""
dmpd_response_status = json.dumps(self.response)
drs = sizeof_fmt(len(dmpd_response_status))
executor_id = self.response['executor_id']
job_id = self.response['job_id']
rabbit_amqp_url = self.config['rabbitmq'].get('amqp_url')
status_sent = False
output_query_count = 0
params = pika.URLParameters(rabbit_amqp_url)
exchange = 'pywren-{}-{}'.format(executor_id, job_id)
while not status_sent and output_query_count < 5:
output_query_count = output_query_count + 1
try:
connection = pika.BlockingConnection(params)
channel = connection.channel()
channel.exchange_declare(exchange=exchange, exchange_type='fanout', auto_delete=True)
channel.basic_publish(exchange=exchange, routing_key='',
body=dmpd_response_status)
connection.close()
logger.info("Execution status sent to rabbitmq - Size: {}".format(drs))
status_sent = True
except Exception as e:
logger.error("Unable to send status to rabbitmq")
logger.error(str(e))
logger.info('Retrying to send status to rabbitmq...')
time.sleep(0.2)
示例6: _fill_optional_args
# 需要导入模块: import pika [as 别名]
# 或者: from pika import URLParameters [as 别名]
def _fill_optional_args(self, function, data):
"""
Fills in those reserved, optional parameters that might be write to the function signature
"""
func_sig = inspect.signature(function)
if 'ibm_cos' in func_sig.parameters:
if 'ibm_cos' in self.pywren_config:
if self.internal_storage.backend == 'ibm_cos':
ibm_boto3_client = self.internal_storage.get_client()
else:
ibm_boto3_client = Storage(self.pywren_config, 'ibm_cos').get_client()
data['ibm_cos'] = ibm_boto3_client
else:
raise Exception('Cannot create the ibm_cos client: missing configuration')
if 'storage' in func_sig.parameters:
data['storage'] = self.internal_storage.get_client()
if 'rabbitmq' in func_sig.parameters:
if 'rabbitmq' in self.pywren_config:
rabbit_amqp_url = self.pywren_config['rabbitmq'].get('amqp_url')
params = pika.URLParameters(rabbit_amqp_url)
connection = pika.BlockingConnection(params)
data['rabbitmq'] = connection
else:
raise Exception('Cannot create the rabbitmq client: missing configuration')
if 'id' in func_sig.parameters:
data['id'] = int(self.call_id)
示例7: __handle_queue_message
# 需要导入模块: import pika [as 别名]
# 或者: from pika import URLParameters [as 别名]
def __handle_queue_message(self, requests_timeout: int):
"""
Метод отвечает за подключение к RabbitMQ очереди и ожидания сообщения с нужным `task_id`
:param requests_timeout: Время между запросами к серверу.
"""
# кол-во попыток на получение результата
attempts = 20
# подключаемся к RabbitMQ и устанавливаем осединение + канал
parameters = pika.URLParameters(
f"amqp://{self.rtmq_username}:{self.rtmq_password}@{self.rtmq_host}:{self.rtmq_port}/{self.rtmq_vhost}"
)
connection = pika.BlockingConnection(parameters=parameters)
channel = connection.channel()
while attempts > 0:
# получение сообщения из очереди
method_frame, _, body = channel.basic_get(self.queue_name)
if body:
# декодируем сообщение из bytes в JSON
json_body = json.loads(body.decode())
# если ID задания сообщения из очереди совпадает с ID требуемого задания - возвращаем его.
# если ID не совпадают - ожидаем дальше
if int(json_body.get("taskId")) == self.task_id:
channel.basic_ack(method_frame.delivery_tag)
connection.close()
return json_body
# ставим небольшую задержку что бы не спамить сервер rabbitmq
time.sleep(requests_timeout)
# уменьшаем счётчик попыток
attempts -= 1
return False
示例8: connect
# 需要导入模块: import pika [as 别名]
# 或者: from pika import URLParameters [as 别名]
def connect(self):
self.connected_node = self.broker_manager.get_current_node(self.publisher_id)
ip = self.broker_manager.get_node_ip(self.connected_node)
port = self.broker_manager.get_publisher_port(self.connected_node)
self.set_actor()
console_out(f"Attempting to connect to {self.connected_node} {ip}:{port}", self.get_actor())
parameters = pika.URLParameters(f"amqp://jack:jack@{ip}:{port}/%2F")
return pika.SelectConnection(parameters,
on_open_callback=self.on_connection_open,
on_open_error_callback=self.on_connection_open_error,
on_close_callback=self.on_connection_closed)
示例9: connect
# 需要导入模块: import pika [as 别名]
# 或者: from pika import URLParameters [as 别名]
def connect():
global connection, curr_node, terminate
print("Attempting to connect to " + nodes[curr_node])
parameters = pika.URLParameters('amqp://jack:jack@' + nodes[curr_node] + ':5672/%2F')
connection = pika.SelectConnection(parameters=parameters,
on_open_callback=on_open,
on_open_error_callback=reconnect,
on_close_callback=on_close)
try:
connection.ioloop.start()
except KeyboardInterrupt:
connection.close()
connection.ioloop.stop()
terminate = True
示例10: mq_connect
# 需要导入模块: import pika [as 别名]
# 或者: from pika import URLParameters [as 别名]
def mq_connect():
""" Connects to the MQ and returns the connection """
_url = create_mq_url(options.mq_hostname, options.mq_port,
username=options.mq_username,
password=options.mq_password)
parameters = pika.URLParameters(_url)
connection = pika.BlockingConnection(parameters)
return connection
示例11: connect
# 需要导入模块: import pika [as 别名]
# 或者: from pika import URLParameters [as 别名]
def connect(self, *args, **kwargs):
"""
This method connects to RabbitMQ, returning the connection handle.
When the connection is established, the on_connection_open method
will be invoked by pika.
:rtype: pika.SelectConnection
"""
LOGGER.debug('Connecting to %s', self._url)
LOGGER.debug('Got arguments: %r %r', args, kwargs)
conn = adapters.TornadoConnection(pika.URLParameters(self._url),
self.on_connection_open)
self._connection = conn
return conn
示例12: connect
# 需要导入模块: import pika [as 别名]
# 或者: from pika import URLParameters [as 别名]
def connect():
params = pika.URLParameters(RMQ_URI)
connection = pika.BlockingConnection(params)
channel = connection.channel()
channel.basic_qos(prefetch_count=1)
channel.queue_declare(queue=RMQ_QUEUE, durable=True)
channel.exchange_declare(exchange=RMQ_XCHNG, exchange_type='topic', durable=True)
channel.queue_bind(queue=RMQ_QUEUE, exchange=RMQ_XCHNG, routing_key=RMQ_QUEUE)
return channel
示例13: connect
# 需要导入模块: import pika [as 别名]
# 或者: from pika import URLParameters [as 别名]
def connect():
params = pika.URLParameters(RMQ_URI+"?heartbeat_interval=300")
connection = pika.BlockingConnection(params)
channel = connection.channel()
channel.basic_qos(prefetch_count=1)
channel.queue_declare(queue=RMQ_QUEUE, durable=True)
channel.exchange_declare(exchange=RMQ_XCHNG, exchange_type='topic', durable=True)
channel.queue_bind(queue=RMQ_QUEUE, exchange=RMQ_XCHNG, routing_key=RMQ_QUEUE)
return channel
示例14: _parse_url
# 需要导入模块: import pika [as 别名]
# 或者: from pika import URLParameters [as 别名]
def _parse_url(broker_url):
params = pika.URLParameters(broker_url)
return params.host
示例15: __init__
# 需要导入模块: import pika [as 别名]
# 或者: from pika import URLParameters [as 别名]
def __init__(self, url, routing_key):
self.parameters = pika.URLParameters(url)
self.client = None
self.queued_messages = []
self.routing_key = routing_key