Chronos is a mutil-thread/mutil-process task scheduler drive by Tornado IOLoop.
Install
Install the extension with the following command:
$ easy_install chronospy
or alternatively if you have pip installed:
$ pip install chronospy
or clone it form github then run the command in shell:
cd chronos # the path to the project
python setup.py install
Hello World
import tornado
import chronos
import os
import urllib2
def test_process():
print("process pid %s" % (os.getpid()))
def test(word):
print("an other task, say '%s'" % (word))
def say():
response = urllib2.urlopen('https://www.google.com/')
html = response.read()
print(html[:10])
def init():
# bind a ioloop or use default ioloop
chronos.setup() # chronos.setup(tornado.ioloop.IOLoop())
chronos.schedule('say', chronos.every_second(1), say)
chronos.schedule('say2', chronos.every_second(1), test_process, once=True, process=True)
chronos.schedule('say3', chronos.every_second(1), lambda: test("test3"))
chronos.start(True)
if __name__ == '__main__':
init()
API
setup
setup(io_loop=None)
bind a io_loop or use default ioloop.
schedule
schedule(name, timer, func, once=False, start=False, process=False, max_executor=5)
add task into chronos:
- name:
uniqe task name,
- timer:
every timer object
- func:
the task function
- once:
set True will run only once time.
- start:
when chronos start and schedule a new task, if set to True will add to Tornado IOLoop and schedule to run at time.
- process:
if process is True, then the job will run in on a procees, otherwise defaultly running in thread.
- max_executor:
the max threads(or processes) to run a task.
remove_task
remove_task(task_name)
stop and remove the task from chronos
start_task
start_task(task_name)
start the task in chronos
stop_task
stop_task(task_name)
stop the task in chronos
start
start(start_ioloop=False)
add tasks in ioloop, if you use chronos in a tornado web server, you can set start_ioloop to “False”, then start your custom ioloop later.
stop
stop(stop_ioloop=False, clear=True)
stop the task in ioloop
- stop_ioloop:
will stop the ioloop if set to “True”.
- clear:
will remove tasks from chrons if set to “True”.
how to use every tools
every_second
set eveny seconds to run a job:
every_second(5) # run job every 5 seconds
every_at
set every hourly or mintuely run a job:
every_at(hour=1, minute=10, second=0) # run at 01:10:00 every day every_at(minute=10, second=0) # run at run at 10 mintue every hour
every
every(10).minutes
every().hour
every().day.at("10:30")
every().monday
every().wednesday.at("13:15")
LICENSE
Copyright (C) 2015 Thomas Huang
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
File details
Details for the file chronospy-0.1.7.zip.
File metadata
- Download URL: chronospy-0.1.7.zip
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db1732835abf2d118e75ef875470095ff149a1ec1c3392c79d83b9b232e86edf
|
|
| MD5 |
05ea456b4ee43dd25c8b6421883fb7a0
|
|
| BLAKE2b-256 |
182521fb6a63ffe3026773b33665a7fa80c35795eea525d8e3c2b21ef2d04ad6
|
File details
Details for the file chronospy-0.1.7.tar.gz.
File metadata
- Download URL: chronospy-0.1.7.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ad8047fb7f01d3ed1baacebbe97babe085a7e159b7ff1b35b6a7a258a37b480
|
|
| MD5 |
da961e0c98f6b659b7fd7718fa2f36fa
|
|
| BLAKE2b-256 |
74d88c9bf9b08c66ce6683baccd0b28a3114db8e69092c72b9f3c67ad223f692
|