Skip to main content

An easy job scheduling interface for flask projects.

Project description

An easy job scheduling interface for flask projects.

Install

pip install flask_jobs

Example Flask Project

import datetime
import time

from flask import Flask, render_template, redirect
from flask_jobs import JobScheduler

app = Flask('JobApp')
jobs = JobScheduler(
    app,
    SERVER_HOST_URL='https://mysite.com/', # only required for linux
    deleteOldJobs=False,# whether to keep old jobs in the database
    )


def Callback(*a, **k):
    print('Callback(', a, k)


@app.route('/')
def Index():
    return render_template(
        'index.html',
        jobs=jobs.GetJobs(),
        utcnow=datetime.datetime.utcnow(),
    )


@app.route('/add_now_job')
def NowJob():
    # Schedule a job to happen ASAP
    jobs.AddJob(
        func=Callback,
        args=('Now Job now={}'.format(datetime.datetime.utcnow()),),
        kwargs={'one': 'won', 'two': 'too'},
        name='Now Job at {}'.format(time.asctime())
    )
    return redirect('/')


@app.route('/add_later_job')
def LaterJob():
    # Schedule a job to happen once in the future
    dt = datetime.datetime.utcnow() + datetime.timedelta(seconds=5)
    jobs.ScheduleJob(
        dt=dt,
        func=Callback,
        args=('ScheduleJob now={}, dt={}'.format(
            datetime.datetime.utcnow(),
            dt
        ),),
        kwargs={'one': 'won', 'two': 'too'},
        name='ScheduleJob Job at {}'.format(time.asctime())
    )
    return redirect('/')


@app.route('/add_repeat_job')
def Repeat():
    # Schedule a job to repeat at the given interval
    dt = datetime.datetime.utcnow()
    jobs.RepeatJob(
        startDT=dt, # The first time to run (None if you want to start right now)
        func=Callback,
        args=('RepeatJob now={}, dt={}'.format(
            datetime.datetime.utcnow(),
            dt
        ),),
        kwargs={'one': 'won', 'two': 'too'},
        name='RepeatJob Job at {}'.format(time.asctime()),
        seconds=10, # can also pass "weeks", "days", "minutes", "hours"
    )
    return redirect('/')


@app.route('/delete/<ID>')
def Delete(ID):
    job = jobs.GetJob(int(ID))
    job.Delete()
    return redirect('/')


if __name__ == '__main__':
    app.run(
        debug=True,
        threaded=True,
    )

Notes

On Linux, a cron job is automatically created that runs once per minute. This could lead to your ScheduleJob() and RepeatJob() being delayed by up to 1 minute. AddJob() will always be executed ASAP.

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

flask_jobs-1.0.14.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

flask_jobs-1.0.14-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file flask_jobs-1.0.14.tar.gz.

File metadata

  • Download URL: flask_jobs-1.0.14.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.2

File hashes

Hashes for flask_jobs-1.0.14.tar.gz
Algorithm Hash digest
SHA256 9f23798dad732f1f835d72000d55a975a5dd13d229d8aff9e576be9a7ead2631
MD5 9c1e20bbca9f579785f1dc295fe4dbcd
BLAKE2b-256 611a14fa37caf356db393521756d33a592ac0a87f6afb34291778d385203bd7a

See more details on using hashes here.

File details

Details for the file flask_jobs-1.0.14-py3-none-any.whl.

File metadata

  • Download URL: flask_jobs-1.0.14-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.2

File hashes

Hashes for flask_jobs-1.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 fc77576e0018527248bcc4a4dac90c616bc8b9b8995840e717bb5003e4f3bcec
MD5 12db4af82a1075d0dedba8bfa45d8c75
BLAKE2b-256 c6486a6507eb9d111075464a7e54a7a6cc2f21ee523ba2245a39b3ba43e0a8fa

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