Skip to content

Scheduler


Calls


cancel

See [Pallet::cancel].

Attributes

Name Type
when BlockNumberFor<T>
index u32

Python

call = substrate.compose_call(
    'Scheduler', 'cancel', {'index': 'u32', 'when': 'u64'}
)

cancel_named

See [Pallet::cancel_named].

Attributes

Name Type
id TaskName

Python

call = substrate.compose_call(
    'Scheduler', 'cancel_named', {'id': '[u8; 32]'}
)

schedule

See [Pallet::schedule].

Attributes

Name Type
when BlockNumberFor<T>
maybe_periodic Option<schedule::Period<BlockNumberFor<T>>>
priority schedule::Priority
call Box<<T as Config>::RuntimeCall>

Python

call = substrate.compose_call(
    'Scheduler', 'schedule', {
    'call': 'Call',
    'maybe_periodic': (
        None,
        ('u64', 'u32'),
    ),
    'priority': 'u8',
    'when': 'u64',
}
)

schedule_after

See [Pallet::schedule_after].

Attributes

Name Type
after BlockNumberFor<T>
maybe_periodic Option<schedule::Period<BlockNumberFor<T>>>
priority schedule::Priority
call Box<<T as Config>::RuntimeCall>

Python

call = substrate.compose_call(
    'Scheduler', 'schedule_after', {
    'after': 'u64',
    'call': 'Call',
    'maybe_periodic': (
        None,
        ('u64', 'u32'),
    ),
    'priority': 'u8',
}
)

schedule_named

See [Pallet::schedule_named].

Attributes

Name Type
id TaskName
when BlockNumberFor<T>
maybe_periodic Option<schedule::Period<BlockNumberFor<T>>>
priority schedule::Priority
call Box<<T as Config>::RuntimeCall>

Python

call = substrate.compose_call(
    'Scheduler', 'schedule_named', {
    'call': 'Call',
    'id': '[u8; 32]',
    'maybe_periodic': (
        None,
        ('u64', 'u32'),
    ),
    'priority': 'u8',
    'when': 'u64',
}
)

schedule_named_after

See [Pallet::schedule_named_after].

Attributes

Name Type
id TaskName
after BlockNumberFor<T>
maybe_periodic Option<schedule::Period<BlockNumberFor<T>>>
priority schedule::Priority
call Box<<T as Config>::RuntimeCall>

Python

call = substrate.compose_call(
    'Scheduler', 'schedule_named_after', {
    'after': 'u64',
    'call': 'Call',
    'id': '[u8; 32]',
    'maybe_periodic': (
        None,
        ('u64', 'u32'),
    ),
    'priority': 'u8',
}
)

Events


CallUnavailable

The call for the provided hash was not found so the task has been aborted.

Attributes

Name Type Composition
task TaskAddress<BlockNumberFor<T>> ('u64', 'u32')
id Option<TaskName> (None, '[u8; 32]')

Canceled

Canceled some task.

Attributes

Name Type Composition
when BlockNumberFor<T> u64
index u32 u32

Dispatched

Dispatched some task.

Attributes

Name Type Composition
task TaskAddress<BlockNumberFor<T>> ('u64', 'u32')
id Option<TaskName> (None, '[u8; 32]')
result DispatchResult {'Ok': (), 'Err': {'Other': None, 'CannotLookup': None, 'BadOrigin': None, 'Module': {'index': 'u8', 'error': '[u8; 4]'}, 'ConsumerRemaining': None, 'NoProviders': None, 'TooManyConsumers': None, 'Token': ('FundsUnavailable', 'OnlyProvider', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported', 'CannotCreateHold', 'NotExpendable', 'Blocked'), 'Arithmetic': ('Underflow', 'Overflow', 'DivisionByZero'), 'Transactional': ('LimitReached', 'NoLayer'), 'Exhausted': None, 'Corruption': None, 'Unavailable': None, 'RootNotAllowed': None}}

PeriodicFailed

The given task was unable to be renewed since the agenda is full at that block.

Attributes

Name Type Composition
task TaskAddress<BlockNumberFor<T>> ('u64', 'u32')
id Option<TaskName> (None, '[u8; 32]')

PermanentlyOverweight

The given task can never be executed since it is overweight.

Attributes

Name Type Composition
task TaskAddress<BlockNumberFor<T>> ('u64', 'u32')
id Option<TaskName> (None, '[u8; 32]')

Scheduled

Scheduled some task.

Attributes

Name Type Composition
when BlockNumberFor<T> u64
index u32 u32

Storage functions


Agenda

Items to be executed, indexed by the block number that they should be executed on.

Python

result = substrate.query(
    'Scheduler', 'Agenda', ['u64']
)

Return value

[
    (
        None,
        {
            'call': {
                'Inline': 'Bytes',
                'Legacy': 'InnerStruct',
                'Lookup': 'InnerStruct',
            },
            'maybe_id': (None, '[u8; 32]'),
            'maybe_periodic': (None, ('u64', 'u32')),
            'origin': {
                'Council': 'scale_info::286',
                'CumulusXcm': 'scale_info::290',
                'Did': 'scale_info::288',
                'PolkadotXcm': 'scale_info::289',
                'TechnicalCommittee': 'scale_info::287',
                'Void': 'scale_info::291',
                'system': 'scale_info::285',
                None: None,
            },
            'priority': 'u8',
        },
    ),
]

IncompleteSince

Python

result = substrate.query(
    'Scheduler', 'IncompleteSince', []
)

Return value

'u64'

Lookup

Lookup from a name to the block number and index of the task.

For v3 -> v4 the previously unbounded identities are Blake2-256 hashed to form the v4 identities.

Python

result = substrate.query(
    'Scheduler', 'Lookup', ['[u8; 32]']
)

Return value

('u64', 'u32')

Constants


MaxScheduledPerBlock

The maximum number of scheduled calls in the queue for a single block.

NOTE: + Dependent pallets' benchmarks might require a higher limit for the setting. Set a higher limit under runtime-benchmarks feature.

Value

50

Python

constant = substrate.get_constant('Scheduler', 'MaxScheduledPerBlock')

MaximumWeight

The maximum weight that may be scheduled per block for any dispatchables.

Value

{'proof_size': 4194304, 'ref_time': 400000000000}

Python

constant = substrate.get_constant('Scheduler', 'MaximumWeight')

Errors


FailedToSchedule

Failed to schedule a call


Named

Attempt to use a non-named function on a named task.


NotFound

Cannot find the scheduled call.


RescheduleNoChange

Reschedule failed because it does not change scheduled time.


TargetBlockNumberInPast

Given target block number is in the past.