Skip to main content

Unix `at` scheduler, for Python 3 and Python 2. Supports atq, atd, & atrm

Project description

atd package (v0.2.2)

at is the companion of cron. While cron says "execute command every 5 minutes", at says, "execute command once at exactly 2:00 PM". at is the original Unix scheduler.

This Python module aims to support all at operations in a safe way.

Installation

pip install atd

Tests

If installing from repository with python setup.py install, it's recommended to run the tests to make sure at is configured properly.

Supports Python 2 and Python 3.

Simple usage example

from atd import atd
import datetime

print('Create some jobs...')
job1 = atd.at("echo lol >> /tmp/lolol", datetime.datetime.now() + 
	datetime.timedelta(minutes = 2))
job2 = atd.at("rm /tmp/lolol", datetime.timedelta(minutes=5))

print("Job 1: {0}".format(job1))
print("Job 2: {0}".format(job2))

print('All right, free up those vars...')
del job1; del job2

print('Check our atd queue for our jobs (`atq`)')
atq = atd.AtQueue()
print [str(job) for job in atq.jobs]

print('Cancel all our jobs.')
print [atd.atrm(job) for job in atq.jobs]

print('Refresh the AtQueue...')
atq.refresh()

print('Poof!')
print [str(job) for job in atq.jobs]

Submodules

atd module

at(command, when, queue='a')

Execute command at when.

command may be anything interpreble by /bin/sh. If you need features specific to another shell, create a script and then make the command <path to shell> <path to script>.

when may be a datetime.timedelta, a datetime.datetime or a timespec str. If a string is provided, it is assumed that it's a valid timespec. See timespec doc in at's documentation.

python-atd also has good support for named queues. Both GNU and BSD at support the concept of named queues, which allow you to easily separate different types of jobs based on type.For example, if you owned a bank, you'd have different types of jobs. Check clearing might go in queue "c" 24 hours after request, while international wire clearing would go in queue "i" 48 hours after request. An unfortunate limitation of at is that all jobs can only be one letter, A-Z or a-z. This means there are only 52 available queues in both BSD at and GNU at.

atrm(*atjobs)

Cancel one or more AtJobs. Takes an AtJob instance returned by at(). You may also choose to save the at job ID in a database, and pass its ID to cancel().

clear(queue = False)

Cancel all atjobs. You may also specify a queue.

convert_datetime(dt)

Convert a datetime object to a POSIX timestamp usable by at. It returns a string.

From the at manual: -t Specify the job time using the POSIX time format. The argument should be in the form [[CC]YY]MMDDhhmm[.SS].

convert_timedelta(td)

Convert a timedelta object to a timespec usable by at. Note that at does not understand seconds, so extra seconds are rounded down.

get_allowed_users()

Get a list() of all users allowed to use at, or raise an OSError if we can't determine it for some reason.

get_denied_users()

Get a list() of all users disallowed from at, or raise an OSError if we can't determine it for some reason.

atq module

class class atq.AtJob(jobid=0, load=False)

Bases: "object"

from_at_stderr(stderr)

Called by at(), it creates an AtJob from at's stderr.

load()

For performance reasons, information about atjobs is lazy-loaded on request (see __get__()). However, you can force load all of it with this function, for example for pretty instantaneous JSON output from __repr__().

class class atq.AtQueue(queue=False)

Bases: "object"

The AtQueue class represents the state of the at queue at the time when it was initialized. Jobs are stored as a list in AtQueue.jobs.

find_job_by_id(id)

Simply iterate through AtQueue.jobs and return the job with the given id. Raise ValueError if no job in AtQueue.

refresh()

Refresh this AtQueue, reading from atq again. This is automatically called on instantiation. self.jobs becomes a list of AtJob objects.

config module

tests module

class class tests.NoNullAtJobComparisonTest(methodName='runTest')

Bases: "unittest.case.TestCase"

test_null_atjob_comparison()

class class tests.ScheduleTests(methodName='runTest')

Bases: "unittest.case.TestCase"

test_at_cancel()

class class tests.TimeConversionTests(methodName='runTest')

Bases: "unittest.case.TestCase"

test_datetime()

test_timedelta()

Module contents

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python-atd-0.2.2.linux-x86_64.tar.gz (15.7 kB view details)

Uploaded Source

File details

Details for the file python-atd-0.2.2.linux-x86_64.tar.gz.

File metadata

File hashes

Hashes for python-atd-0.2.2.linux-x86_64.tar.gz
Algorithm Hash digest
SHA256 5cf1df4c5579a12fcaa86bec5f1b9e5fb327bbfc06c51d1296208874ecb05c0b
MD5 fba4584f37754720d222a32afb03dac7
BLAKE2b-256 6078a37c7344626212007ac0eac2fb9f8d2ab6942eab2f9ac7244bb95f47512e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page