https://github.com/maxhumber/hickory
Command line tool for scheduling Python scripts
https://github.com/maxhumber/hickory
hacktoberfest schedule scheduling-python-scripts
Last synced: 8 months ago
JSON representation
Command line tool for scheduling Python scripts
- Host: GitHub
- URL: https://github.com/maxhumber/hickory
- Owner: maxhumber
- License: mit
- Created: 2020-07-04T14:26:22.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-06-02T14:51:00.000Z (over 4 years ago)
- Last Synced: 2025-02-19T02:12:48.489Z (11 months ago)
- Topics: hacktoberfest, schedule, scheduling-python-scripts
- Language: Python
- Homepage:
- Size: 761 KB
- Stars: 148
- Watchers: 7
- Forks: 11
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
### About
`hickory` is a simple command line tool for scheduling Python scripts.
### Support
| Operating System | Scheduler |
| ---------------- | ------------------------------------------------ |
| macOS | [launchd](https://en.wikipedia.org/wiki/Launchd) |
| Linux | [systemd](https://en.wikipedia.org/wiki/Systemd) |
| Windows | ❌ |
### Install
```sh
pip install hickory
```
### Quickstart
Create a file called `foo.py`:
```python
import datetime
import time
stamp = datetime.datetime.now().strftime("%H:%M:%S")
time.sleep(5)
print(f"Foo - {stamp} + 5 seconds")
```
Schedule `foo.py` to execute every ten minutes:
```sh
hickory schedule foo.py --every=10minutes
```
Check the status of all queued schedules:
```sh
hickory status
```
Stop and delete the schedule for `foo.py`:
```sh
hickory kill foo.py
```
### Logs
macOS - logs are stored in the same directory as the scheduled script:
```sh
tail -f hickory.log
```
Linux - logs are written to the journal:
```sh
journalctl -f
```
### `--every` Examples
| Repeat | |
| ------------------------------------------------------- | ------------------------ |
| Every ten minutes | `--every=10minutes` |
| Every day at 10:10 AM | `--every=@10:10` |
| Every Monday at 10:10 AM | `--every=monday@10:10am` |
| Every 10th day of the month at 10:10 AM | `--every=10th@10:10am` |
| Every last day of the month at 10:10 AM | `--every=eom@10:10am` |
| Every 10th and last day of the month at 10 AM and 10 PM | `--every=10,eom@10,10pm` |
### `--every` Table
| Interval | |
| ---------------- | --------------------------------------------- |
| 10 seconds | `10`, `10s`, `10sec`, `10secs`, `10seconds` |
| 10 minutes | `10m`, `10min`, `10mins`, `10minutes` |
| 10 hours | `10h`, `10hr`, `10hrs`, `10hours` |
| **Time** | |
| 10:00 AM | `@10`, `@10am` |
| 10:00 PM | `@22`, `@10pm` |
| 10:10 AM | `@10:10`, `@10:10am` |
| 10:10 PM | `@22:10`, `@10:10pm` |
| **Weekday** | |
| Monday | `m@`, `mon@`, `monday@` |
| Tuesday | `t@`, `tue@`, `tues@`, `tuesday@` |
| Wednesday | `w@`, `wed@`, `weds@`, `wednesday@` |
| Thursday | `th@`, `thu@`, `thur@`, `thurs@`, `thursday@` |
| Friday | `f@`, `fri@`, `friday@` |
| Saturday | `s@`, `sat@`, `saturday@` |
| Sunday | `su@`, `sun@`, `sunday@` |
| **Calendar Day** | |
| 1st | `1@`, `1st@` |
| 2nd | `2@`, `2nd@` |
| 3rd | `3@`, `3rd@` |
| 4th | `4@`, `4th@` |
| 15th | `15@`, `15th@` |
| 31st | `31@`, `31st@` |
| **Other Day** | |
| Every Day | `day@` |
| Every Weekday | `weekday@` |
| End of Month | `eom@` |