Skip to content

Instantly share code, notes, and snippets.

@john990
Forked from chadselph/flaskwithcron.py
Created January 24, 2016 03:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save john990/290e78a44ea00a4a4d60 to your computer and use it in GitHub Desktop.
Save john990/290e78a44ea00a4a4d60 to your computer and use it in GitHub Desktop.
flask with "cron"-like loop
from flask import Flask, render_template, jsonify, request
from threading import Timer, Thread
from time import sleep
app = Flask(__name__)
@app.route("/api/<method>")
def api(method):
data = {
'foo': 'bar',
'method': method
}
response = jsonify(data)
response.status_code = 200
return response
class Scheduler(object):
def __init__(self, sleep_time, function):
self.sleep_time = sleep_time
self.function = function
self._t = None
def start(self):
if self._t is None:
self._t = Timer(self.sleep_time, self._run)
self._t.start()
else:
raise Exception("this timer is already running")
def _run(self):
self.function()
self._t = Timer(self.sleep_time, self._run)
self._t.start()
def stop(self):
if self._t is not None:
self._t.cancel()
self._t = None
def query_db():
print "IM QUERYING A DB"
if __name__ == "__main__":
scheduler = Scheduler(5, query_db)
scheduler.start()
app.run(host='0.0.0.0', debug=True, port=1337)
scheduler.stop()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment