Migrate task_worker.py from @sync_compatible to @async_dispatch
Part of ongoing effort to remove @sync_compatible decorator (#15008).
- Add explicit async methods: astart, astop, aserve
- Decorate sync methods (start, stop, serve) with @async_dispatch
- Sync implementations use from_sync.call_soon_in_loop_thread
- Update handle_sigterm to call astop directly
- Update tests to mock async methods when called from async context
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Migrate notification blocks from @sync_compatible to @async_dispatch
Migrates the notify methods in AbstractAppriseNotificationBlock, AppriseNotificationBlock,
PagerDutyWebHook, CustomWebhookNotificationBlock, and SendgridEmail to use @async_dispatch
instead of @sync_compatible.
This follows the pattern established in #20230 for removing sync_compatible from core.
Closes #15008 (partially)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>