Warning

This document is for an old release 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: Optional[str] = None
prohibited_middleware: FrozenSet[str] = frozenset({})
transport_class

alias of galaxy.web_stack.transport.ApplicationStackTransport

log_filter_class

alias of galaxy.web_stack.ApplicationStackLogFilter

log_format = '%(name)s %(levelname)s %(asctime)s [pN:%(processName)s,p:%(process)d,tN:%(threadName)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]

Initialize self. See help(type(self)) for accurate signature.

supports_returning()[source]
supports_skip_locked()[source]
get_preferred_handler_assignment_method()[source]
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]
property pool_name
property configured_pools
has_base_pool(pool_name)[source]
has_pool(pool_name)[source]
in_pool(pool_name)[source]
pool_members(pool_name)[source]
property 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]

Initialize self. See help(type(self)) for accurate 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: Optional[str] = 'uWSGI'
prohibited_middleware: FrozenSet[str] = frozenset({'EvalException', 'wrap_in_static'})
transport_class

alias of galaxy.web_stack.transport.UWSGIFarmMessageTransport

log_filter_class

alias of galaxy.web_stack.UWSGILogFilter

log_format = '%(name)s %(levelname)s %(asctime)s [pN:%(processName)s,p:%(process)d,w:%(worker_id)s,m:%(mule_id)s,tN:%(threadName)s] %(message)s'
server_name_template = '{server_name}.{pool_name}.{instance_id}'
postfork_functions: List[Tuple[Callable, List, Dict]] = []
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]

Initialize self. See help(type(self)) for accurate signature.

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

Bases: galaxy.web_stack.ApplicationStack

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

Bases: galaxy.web_stack.ApplicationStack

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

Initialize self. See help(type(self)) for accurate signature.

property configured_pools
in_pool(pool_name)[source]
pool_members(pool_name)[source]
galaxy.web_stack.application_stack_class()Type[galaxy.web_stack.ApplicationStack][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)galaxy.web_stack.ApplicationStack[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.

class galaxy.web_stack.handlers.HANDLER_ASSIGNMENT_METHODS(value)[source]

Bases: str, enum.Enum

An enumeration.

MEM_SELF = 'mem-self'
DB_SELF = 'db-self'
DB_PREASSIGN = 'db-preassign'
DB_TRANSACTION_ISOLATION = 'db-transaction-isolation'
DB_SKIP_LOCKED = 'db-skip-locked'
UWSGI_MULE_MESSAGE = 'uwsgi-mule-message'
classmethod has_value(value)[source]
exception galaxy.web_stack.handlers.HandlerAssignmentSkip[source]

Bases: 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: Tuple[str, ] = ()
UNSUPPORTED_HANDLER_ASSIGNMENT_METHODS: Set[str] = {}
add_handler(handler_id, tags)[source]
static xml_to_dict(config, config_element)[source]
static get_xml_default(config, parent)[source]
property use_messaging
property deterministic_handler_assignment
property is_handler

Indicate whether the current server is configured as a handler.

Returns

bool

property handler_tags

Get an iterable of all configured handler tags.

property 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 py:class: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]

Initialize self. See help(type(self)) for accurate signature.

register_func(func, name=None)[source]
deregister_func(func=None, name=None)[source]
property 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]

Initialize self. See help(type(self)) for accurate 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.

property target
property 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]

Initialize self. See help(type(self)) for accurate signature.

validate()[source]
property 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

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

Bases: galaxy.web_stack.message.TaskMessage

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

Bases: galaxy.web_stack.message.TaskMessage

target: Optional[str] = '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]