Use async to have functions run on a schedule.
Project description
Use async to have functions run on a schedule.
Example
Async Sched can run tasks on a schedule. It can also receive new tasks (in limited fashion) and change the running schedules without stopping the service.
scheduler.py schedules/ task1.py task2.py
# scheduler.py
import async_sched
srv = async_sched.start_server(('127.0.0.1', 8000),
update_path='./schedules',
global_server=True)
# srv.add('3 Second', async_sched.Schedule(seconds=3), print, 'Hello 3 seconds')
srv.run_forever()
Task 1 in the schedules directory will automatically be imported. Because start_server sets the server as an accessible attribute with get_server we can dynamically add schedules.
# schedules/task1.py
from async_sched import get_server, Schedule
import datetime
def print_task1():
print('Hello! I am task 1 ' + str(datetime.datetime.now()))
s = Schedule(seconds=30, repeat=True)
# This will remove an existing 'Task 1' and schedule a new 'Task 1'
server = get_server()
server.add('Task 1', s, print_task1)
In the task 2 file we are not scheduling any commands, but we are registering a callback function that can be run from a client later.
# schedules/task2.py
from async_sched import get_server, Schedule
import datetime
server = get_server()
@server.register_callback # or @server.register_callback('print_task2')
def print_task2(name):
print('Task 2 is running! ', name, str(datetime.datetime.now()))
Now run the scheduler server to listen to remote commands and manage the running schedules.
python scheduler.py
# or python -m async_sched.server.run –path “schedules” –host “127.0.0.1” –port 8000
Use a client to print the running schedules.
python -m async_sched.client.request_schedules –host “127.0.0.1” –port 8000
Reload the files in the ./schedules/ directory.
python -m async_sched.client.update server –host “127.0.0.1” –port 8000
Stop a schedule that is running.
python -m async_sched.client.stop_schedule “Task 1” –host “127.0.0.1” –port 8000
Run a registered callback function.
python -m async_sched.client run_command “print_task2” “hello” –host “127.0.0.1” –port 8000
Schedule a registered command.
python -m async_sched.client schedule_command “print_task2” “hello” –seconds 10 –host “127.0.0.1” –port 8000
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for async_sched-1.2.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63e06bcd416caeb0f30630daf9a8a148da95cc69bee602a9d1e9db5c8a971a9b |
|
MD5 | 9fc6f0b505d17ec70e59ecffe42dc3e1 |
|
BLAKE2b-256 | 1beb865c1aa3c9713ce9eba284d9320f8f313cf1ae4f1ca5e4963f3a5eeb747d |