Warning

This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

galaxy.web_stack package

Web application stack operations

class galaxy.web_stack.ApplicationStackLogFilter(name='')[source]

Bases: logging.Filter

filter(record)[source]

Determine if the specified record is to be logged.

Is the specified record to be logged? Returns 0 for no, nonzero for yes. If deemed appropriate, the record may be modified in-place.

class galaxy.web_stack.UWSGILogFilter(name='')[source]

Bases: logging.Filter

filter(record)[source]

Determine if the specified record is to be logged.

Is the specified record to be logged? Returns 0 for no, nonzero for yes. If deemed appropriate, the record may be modified in-place.

class galaxy.web_stack.ApplicationStack(app=None, config=None)[source]

Bases: object

name = None
prohibited_middleware = frozenset([])
transport_class

alias of galaxy.web_stack.transport.ApplicationStackTransport

log_filter_class

alias of ApplicationStackLogFilter

log_format = '%(name)s %(levelname)s %(asctime)s %(message)s'
server_name_template = '{server_name}'
default_app_name = 'main'
classmethod log_filter()[source]
classmethod get_app_kwds(config_section, app_name=None, for_paste_app=False)[source]
classmethod register_postfork_function(f, *args, **kwargs)[source]
__init__(app=None, config=None)[source]

x.__init__(…) initializes x; see help(type(x)) for signature

init_job_handling(job_config)[source]

Automatically add pools as handlers if they are named per predefined names and there is not an explicit job handler assignment configuration.

Also automatically set the preferred assignment method if pool handlers are found and an assignment method is not explicitly configured by the administrator.

init_late_prefork()[source]
log_startup()[source]
start()[source]
allowed_middleware(middleware)[source]
workers()[source]
pool_name
configured_pools
has_base_pool(pool_name)[source]
has_pool(pool_name)[source]
in_pool(pool_name)[source]
pool_members(pool_name)[source]
facts
set_postfork_server_name(app)[source]
register_message_handler(func, name=None)[source]
deregister_message_handler(func=None, name=None)[source]
send_message(dest, msg=None, target=None, params=None, **kwargs)[source]
shutdown()[source]
class galaxy.web_stack.MessageApplicationStack(app=None, config=None)[source]

Bases: galaxy.web_stack.ApplicationStack

__init__(app=None, config=None)[source]

x.__init__(…) initializes x; see help(type(x)) for signature

init_late_prefork()[source]
start()[source]
register_message_handler(func, name=None)[source]
deregister_message_handler(func=None, name=None)[source]
send_message(dest, msg=None, target=None, params=None, **kwargs)[source]
shutdown()[source]
class galaxy.web_stack.UWSGIApplicationStack(app=None, config=None)[source]

Bases: galaxy.web_stack.MessageApplicationStack

Interface to the uWSGI application stack. Supports running additional webless Galaxy workers as mules. Mules must be farmed to be communicable via uWSGI mule messaging, unfarmed mules are not supported.

Note that mules will use this as their stack class even though they start with the “webless” loading point.

name = 'uWSGI'
prohibited_middleware = frozenset(['EvalException', 'wrap_in_static'])
transport_class

alias of galaxy.web_stack.transport.UWSGIFarmMessageTransport

log_filter_class

alias of UWSGILogFilter

log_format = '%(name)s %(levelname)s %(asctime)s [p:%(process)s,w:%(worker_id)s,m:%(mule_id)s] [%(threadName)s] %(message)s'
server_name_template = '{server_name}.{pool_name}.{instance_id}'
postfork_functions = []
localhost_addrs = ('127.0.0.1', '[::1]')
bind_all_addrs = ('', '0.0.0.0', '[::]')
classmethod get_app_kwds(config_section, app_name=None)[source]
classmethod register_postfork_function(f, *args, **kwargs)[source]
__init__(app=None, config=None)[source]

x.__init__(…) initializes x; see help(type(x)) for signature

configured_pools
instance_id
log_startup()[source]
start()[source]
in_pool(pool_name)[source]
pool_members(pool_name)[source]
workers()[source]
facts
shutdown()[source]
class galaxy.web_stack.PasteApplicationStack(app=None, config=None)[source]

Bases: galaxy.web_stack.ApplicationStack

name = 'Python Paste'
class galaxy.web_stack.WeblessApplicationStack(app=None, config=None)[source]

Bases: galaxy.web_stack.ApplicationStack

name = 'Webless'
__init__(app=None, config=None)[source]

x.__init__(…) initializes x; see help(type(x)) for signature

configured_pools
in_pool(pool_name)[source]
pool_members(pool_name)[source]
galaxy.web_stack.application_stack_class()[source]

Returns the correct ApplicationStack class for the stack under which this Galaxy process is running.

galaxy.web_stack.application_stack_instance(app=None, config=None)[source]
galaxy.web_stack.application_stack_log_filter()[source]
galaxy.web_stack.application_stack_log_formatter()[source]
galaxy.web_stack.register_postfork_function(f, *args, **kwargs)[source]
galaxy.web_stack.get_app_kwds(config_section, app_name=None)[source]
galaxy.web_stack.get_stack_facts(config=None)[source]

Submodules

galaxy.web_stack.handlers module

Utilities for dealing with the Galaxy ‘handler’ process pattern.

A ‘handler’ is a named Python process running the Galaxy application responsible for some activity such as queuing up jobs or scheduling workflows.

exception galaxy.web_stack.handlers.HandlerAssignmentSkip[source]

Bases: exceptions.Exception

Exception for handler assignment methods to raise if the next method should be tried.

class galaxy.web_stack.handlers.ConfiguresHandlers[source]

Bases: object

DEFAULT_HANDLER_TAG = '_default_'
DEFAULT_BASE_HANDLER_POOLS = ()
UNSUPPORTED_HANDLER_ASSIGNMENT_METHODS = ()
add_handler(handler_id, tags)[source]
static xml_to_dict(config, config_element)[source]
static get_xml_default(config, parent)[source]
use_messaging
deterministic_handler_assignment
is_handler

Indicate whether the current server is configured as a handler.

Returns:bool
handler_tags

Get an iteratable of all configured handler tags.

self_handler_tags

Get an iterable of the current process’s configured handler tags.

assign_handler(obj, configured=None, **kwargs)[source]

Set a job handler, flush obj

Called assignment methods should raise :exception:`HandlerAssignmentSkip` to indicate that the next method should be tried.

Parameters:
  • obj (instance of galaxy.model.Job or other model object with a set_handler() method.) – Object to assign a handler to (must be a model object with handler attribute and log_str callable).
  • configured (str or None.) – Preconfigured handler (ID, tag, or None) for the given object.
Returns:

bool – True on successful assignment, False otherwise.

galaxy.web_stack.message module

Web Application Stack worker messaging

class galaxy.web_stack.message.ApplicationStackMessageDispatcher[source]

Bases: object

__init__()[source]

x.__init__(…) initializes x; see help(type(x)) for signature

register_func(func, name=None)[source]
deregister_func(func=None, name=None)[source]
handler_count
dispatch(msg_str)[source]
class galaxy.web_stack.message.ApplicationStackMessage(target=None, **kwargs)[source]

Bases: dict

default_handler = None
__init__(target=None, **kwargs)[source]

x.__init__(…) initializes x; see help(type(x)) for signature

validate()[source]
encode()[source]
bind_default_handler(obj, name)[source]

Bind the default handler method to obj as attribute name.

This could also be implemented as a mixin class.

target
set_target
class galaxy.web_stack.message.ParamMessage(target=None, params=None, **kwargs)[source]

Bases: galaxy.web_stack.message.ApplicationStackMessage

__init__(target=None, params=None, **kwargs)[source]

x.__init__(…) initializes x; see help(type(x)) for signature

validate()[source]
params
set_params
class galaxy.web_stack.message.TaskMessage(target=None, params=None, **kwargs)[source]

Bases: galaxy.web_stack.message.ParamMessage

static default_handler(self, msg)[source]

Can be bound to an instance of any class that has message handling methods named like _handle_{task}_method

task
class galaxy.web_stack.message.JobHandlerMessage(target=None, params=None, **kwargs)[source]

Bases: galaxy.web_stack.message.TaskMessage

target = 'job_handler'
class galaxy.web_stack.message.WorkflowSchedulingMessage(target=None, params=None, **kwargs)[source]

Bases: galaxy.web_stack.message.TaskMessage

target = 'workflow_scheduling'
galaxy.web_stack.message.decode(msg_str)[source]

galaxy.web_stack.transport module

Web application stack operations

class galaxy.web_stack.transport.ApplicationStackTransport(app, stack, dispatcher=None)[source]

Bases: object

SHUTDOWN_MSG = '__SHUTDOWN__'
__init__(app, stack, dispatcher=None)[source]

Pre-fork initialization.

init_late_prefork()[source]
start_if_needed()[source]
stop_if_unneeded()[source]
start()[source]

Post-fork initialization.

send_message(msg, dest)[source]
shutdown()[source]
class galaxy.web_stack.transport.UWSGIFarmMessageTransport(app, stack, dispatcher=None)[source]

Bases: galaxy.web_stack.transport.ApplicationStackTransport

Communication via uWSGI Mule Farm messages. Communication is unidirectional (workers -> mules).

init_late_prefork()[source]
__init__(app, stack, dispatcher=None)[source]

Pre-fork initialization.

start()[source]

Post-fork initialization.

This is mainly done here for the future possibility that we’ll be able to run mules post-fork without exec()ing. In a programmed mule it could be done at __init__ time.

shutdown()[source]
send_message(msg, dest)[source]