Skip to main content

z4j-taskiqscheduler

PyPI version Python License

The taskiq-scheduler adapter for z4j.

Surfaces taskiq-scheduler periodic jobs on the dashboard's Schedules page as list/read inventory. Delete is advertised only for a custom source that overrides taskiq's unsupported delete_schedule default.

Compatibility

  • TaskIQ 0.11+ and <1
  • Python 3.11+

Full per-adapter matrix at https://docs.z4j.com/reference/compatibility/.

What it ships

Capability Notes
List schedules jobs returned by the configured taskiq-scheduler source
Read by registered name
Delete advertised only when the configured source implements it; label-defined schedules require a code change and redeploy
Boot inventory full snapshot at agent connect; existing schedules show up without editing

taskiq-scheduler schedules are typically defined declaratively (label source, JSON file, or label decorators), so create / update are intentionally out of scope, those need a deploy round-trip. taskiq also has no enable/disable toggle or trigger-now primitive, so the dashboard hides those actions for this adapter.

Install

pip install z4j-taskiq z4j-taskiqscheduler
import asyncio
import logging
import os

from taskiq import TaskiqEvents, TaskiqScheduler
from taskiq.schedule_sources import LabelScheduleSource
from z4j_bare import install_agent
from z4j_taskiq import TaskiqEngineAdapter, attach_to_broker
from z4j_taskiqscheduler import TaskiqSchedulerAdapter

source = LabelScheduleSource(broker)
scheduler = TaskiqScheduler(broker=broker, sources=[source])
engine = TaskiqEngineAdapter(broker=broker)
attach_to_broker(broker, adapter=engine)
_z4j_installed = False
logger = logging.getLogger(__name__)


@broker.on_event(TaskiqEvents.CLIENT_STARTUP)
async def install_z4j_after_scheduler_sources(_state) -> None:
    global _z4j_installed
    if _z4j_installed:
        return
    owner_loop = asyncio.get_running_loop()
    try:
        scheduler_adapter = TaskiqSchedulerAdapter(
            source=source,
            source_loop=owner_loop,
        )
        install_agent(
            engines=[engine],
            schedulers=[scheduler_adapter],
            brain_url="https://brain.example.com",
            token="z4j_agent_...",
            project_id="my-project",
            hmac_secret=os.environ["Z4J_HMAC_SECRET"],
        )
    except Exception as exc:
        logger.error(
            "z4j TaskIQ scheduler install failed (%s)",
            type(exc).__name__,
        )
        return
    _z4j_installed = True

Run this module with TaskIQ's scheduler CLI. It starts each configured source before calling broker startup, so CLIENT_STARTUP installs z4j on the broker's real owner loop after this LabelScheduleSource is live. The guard makes a repeated callback reuse the same adapter and agent. The CLI owns broker startup and shutdown; do not call either lifecycle method from this module.

For a custom async schedule source, always pass that same verified loop as source_loop. z4j marshals get_schedules and supported delete_schedule calls to it once, without retrying an ambiguous delete. Only the exact stock LabelScheduleSource, whose read is an in-memory registry snapshot, supports an unbound direct read; custom sources fail closed until an owner is supplied.

Pairs with

Reliability

  • Inventory failures skip the snapshot rather than publishing an authoritative empty schedule set.
  • Custom source reads and deletes stay on their explicit owner event loop; cancellation is forwarded and z4j does not retry the operation.
  • The adapter does not rewrite schedule definitions. Delete is advertised and delegated only when a custom source overrides taskiq's failing default; the standard label source remains read-only.

Documentation

Full docs at docs.z4j.com/schedulers/taskiq-scheduler/.

License

Apache-2.0, see LICENSE.

Metadata

Release files for z4j-taskiqscheduler 1.12.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for z4j-taskiqscheduler 1.12.0
File Size Uploaded
z4j_taskiqscheduler-1.12.0.tar.gz 14.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for z4j-taskiqscheduler 1.12.0
File Interpreter ABI Platform
z4j_taskiqscheduler-1.12.0-py3-none-any.whl Python 3 none any Details

Total release size: 26.2 kB

Release files / z4j_taskiqscheduler-1.12.0.tar.gz

Download URL z4j_taskiqscheduler-1.12.0.tar.gz
Size 14.8 kB
Tags Source
SHA-256 checksum
How to use checksums
2569d39e3447caf83e4d9c6af2dda21dd40b84b490754a5dd124d134e689d091
BLAKE2b-256 checksum
How to use checksums
de956b0728e8013e15e00953c4620d08df3fedf0a287cac203423c6e0f9be6b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / z4j_taskiqscheduler-1.12.0-py3-none-any.whl

Download URL z4j_taskiqscheduler-1.12.0-py3-none-any.whl
Size 11.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8579215006ed4d99809b96f3571ace99ee0e520d577d4729bf0e331ca00a9a2c
BLAKE2b-256 checksum
How to use checksums
ba5d5b77a4d7ca929bfc01afdc10e439d3daa648784cd042ffe37ea74ee0ae42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

This release

1.12.0 This release

2 release files

1.11.0

2 release files

1.10.0

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.7

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page