Git Product home page Git Product logo

Comments (11)

dgrant avatar dgrant commented on August 9, 2024 3

This already works, or was fixed at some point. You can do:
schedule.every().hour.at(':00').do(job)

@dbader Please close this issue.

from schedule.

dylwhich avatar dylwhich commented on August 9, 2024

Try this:

schedule.every().hour.at('00:00').do(job)

It's the same syntax as for performing a task at the specified time each day, but the hour component will be ignored.

from schedule.

DieterKoblenz avatar DieterKoblenz commented on August 9, 2024

But with the hour component ignored, won't it only be executed at 00:00?

from schedule.

dylwhich avatar dylwhich commented on August 9, 2024

Sorry, I meant the hour component in the 'at' clause. It will ignore that value since it only applies to every().day, and just use the minute; so for example every().hour.at('00:30') will execute the job every half hour, and should be identical to every().hour.at('23:00').

I think this is a little quirky, and it would work a lot better with a specialized at statement, so for every day you could have: every().day.at_time('11:45') (basically the current functionality of at), or if you want it to run at a certain minute every hour it could instead be every().hour.at_minute('30'). This would also make it easier to add support for seconds in at, of which I'm a fan.

from schedule.

631068264 avatar 631068264 commented on August 9, 2024

@dylwhich at_time() is not work.

    schedule.every().day.at_time("22:37").do(daily_task)
TypeError: 'NoneType' object is not callable

from schedule.

dylwhich avatar dylwhich commented on August 9, 2024

Sorry, I should have been more clear; the second paragraph of my comment is a theoretical description of how it could be changed to work a bit more flexibly/clearly. every().day.at("22:37").do(daily_task) should currently work as expected though.

from schedule.

dgrant avatar dgrant commented on August 9, 2024

If my PR gets approved, it will throw an assertion error if you try to do schedule.every().hour.at('00:00').do(job), it will suggest you do schedule.every().hour.at(':00').do(job) instead.

from schedule.

lucaNicoli88 avatar lucaNicoli88 commented on August 9, 2024

@dgrant I would like to execute my job every hour ad xx:45.
If I try schedule.every().hour.at(':45').do(make_prediction, p, log_file), it does not work.
I can execute the job only once time at 45.

Can you help me?

from schedule.

rokcarl avatar rokcarl commented on August 9, 2024

This does not work, @dgrant.
Here's my output:

Mon Jul  9 15:00:56 2018
Mon Jul  9 16:00:57 2018
Mon Jul  9 17:04:01 2018
Mon Jul  9 18:04:58 2018

Here's the code that did this, modified, but the main ingredients are here:

import schedule
import time

def do_something():
    # some work here
    pass

def print_time():
    print(time.asctime())
    time.sleep(100)

schedule.every().hour.do(do_something)
schedule.every().hour.at(':00').do(print_time)

while True:
    schedule.run_pending()
    time.sleep(60)

from schedule.

rokcarl avatar rokcarl commented on August 9, 2024

I've seen this use case requested a few times here (e.g. #144) but no solution has been provided. Quite a common use case. I really hope we get something reliable.

from schedule.

SijmenHuizenga avatar SijmenHuizenga commented on August 9, 2024

Let's take a closer look at the example provided by @rokcarl and investigate further. I've taken the following snippet:

import schedule
import time

def job():
    print("job", time.asctime())
    time.sleep(100)

schedule.every().hour.at(':00').do(job)

while True:
    print("run_pending", time.asctime())
    schedule.run_pending()
    time.sleep(60)

and let it ran for a few ours. It gave the following output:

Click here to expand.
run_pending Sat Nov 21 13:16:16 2020
run_pending Sat Nov 21 13:17:16 2020
run_pending Sat Nov 21 13:18:17 2020
run_pending Sat Nov 21 13:19:17 2020
run_pending Sat Nov 21 13:20:17 2020
run_pending Sat Nov 21 13:21:17 2020
run_pending Sat Nov 21 13:22:17 2020
run_pending Sat Nov 21 13:23:17 2020
run_pending Sat Nov 21 13:24:17 2020
run_pending Sat Nov 21 13:25:17 2020
run_pending Sat Nov 21 13:26:17 2020
run_pending Sat Nov 21 13:27:17 2020
run_pending Sat Nov 21 13:28:17 2020
run_pending Sat Nov 21 13:29:17 2020
run_pending Sat Nov 21 13:30:17 2020
run_pending Sat Nov 21 13:31:17 2020
run_pending Sat Nov 21 13:32:17 2020
run_pending Sat Nov 21 13:33:17 2020
run_pending Sat Nov 21 13:34:17 2020
run_pending Sat Nov 21 13:35:17 2020
run_pending Sat Nov 21 13:36:17 2020
run_pending Sat Nov 21 13:37:17 2020
run_pending Sat Nov 21 13:38:17 2020
run_pending Sat Nov 21 13:39:17 2020
run_pending Sat Nov 21 13:40:18 2020
run_pending Sat Nov 21 13:41:18 2020
run_pending Sat Nov 21 13:42:18 2020
run_pending Sat Nov 21 13:43:18 2020
run_pending Sat Nov 21 13:44:18 2020
run_pending Sat Nov 21 13:45:18 2020
run_pending Sat Nov 21 13:46:18 2020
run_pending Sat Nov 21 13:47:18 2020
run_pending Sat Nov 21 13:48:18 2020
run_pending Sat Nov 21 13:49:18 2020
run_pending Sat Nov 21 13:50:18 2020
run_pending Sat Nov 21 13:51:18 2020
run_pending Sat Nov 21 13:52:18 2020
run_pending Sat Nov 21 13:53:18 2020
run_pending Sat Nov 21 13:54:18 2020
run_pending Sat Nov 21 13:55:18 2020
run_pending Sat Nov 21 13:56:18 2020
run_pending Sat Nov 21 13:57:18 2020
run_pending Sat Nov 21 13:58:18 2020
run_pending Sat Nov 21 13:59:18 2020
run_pending Sat Nov 21 14:00:18 2020
job Sat Nov 21 14:00:18 2020
run_pending Sat Nov 21 14:02:59 2020
run_pending Sat Nov 21 14:03:59 2020
run_pending Sat Nov 21 14:04:59 2020
run_pending Sat Nov 21 14:05:59 2020
run_pending Sat Nov 21 14:06:59 2020
run_pending Sat Nov 21 14:07:59 2020
run_pending Sat Nov 21 14:08:59 2020
run_pending Sat Nov 21 14:09:59 2020
run_pending Sat Nov 21 14:10:59 2020
run_pending Sat Nov 21 14:11:59 2020
run_pending Sat Nov 21 14:12:59 2020
run_pending Sat Nov 21 14:13:59 2020
run_pending Sat Nov 21 14:14:59 2020
run_pending Sat Nov 21 14:15:59 2020
run_pending Sat Nov 21 14:16:59 2020
run_pending Sat Nov 21 14:17:59 2020
run_pending Sat Nov 21 14:18:59 2020
run_pending Sat Nov 21 14:19:59 2020
run_pending Sat Nov 21 14:20:59 2020
run_pending Sat Nov 21 14:22:00 2020
run_pending Sat Nov 21 14:23:00 2020
run_pending Sat Nov 21 14:24:00 2020
run_pending Sat Nov 21 14:25:00 2020
run_pending Sat Nov 21 14:26:00 2020
run_pending Sat Nov 21 14:27:00 2020
run_pending Sat Nov 21 14:28:00 2020
run_pending Sat Nov 21 14:29:00 2020
run_pending Sat Nov 21 14:30:00 2020
run_pending Sat Nov 21 14:31:00 2020
run_pending Sat Nov 21 14:32:00 2020
run_pending Sat Nov 21 14:33:00 2020
run_pending Sat Nov 21 14:34:00 2020
run_pending Sat Nov 21 14:35:00 2020
run_pending Sat Nov 21 14:36:00 2020
run_pending Sat Nov 21 14:37:00 2020
run_pending Sat Nov 21 14:38:00 2020
run_pending Sat Nov 21 14:39:00 2020
run_pending Sat Nov 21 14:40:00 2020
run_pending Sat Nov 21 14:41:00 2020
run_pending Sat Nov 21 14:42:00 2020
run_pending Sat Nov 21 14:43:00 2020
run_pending Sat Nov 21 14:44:01 2020
run_pending Sat Nov 21 14:45:01 2020
run_pending Sat Nov 21 14:46:01 2020
run_pending Sat Nov 21 14:47:01 2020
run_pending Sat Nov 21 14:48:01 2020
run_pending Sat Nov 21 14:49:01 2020
run_pending Sat Nov 21 14:50:01 2020
run_pending Sat Nov 21 14:51:01 2020
run_pending Sat Nov 21 14:52:01 2020
run_pending Sat Nov 21 14:53:01 2020
run_pending Sat Nov 21 14:54:01 2020
run_pending Sat Nov 21 14:55:01 2020
run_pending Sat Nov 21 14:56:01 2020
run_pending Sat Nov 21 14:57:01 2020
run_pending Sat Nov 21 14:58:01 2020
run_pending Sat Nov 21 14:59:01 2020
run_pending Sat Nov 21 15:00:01 2020
job Sat Nov 21 15:00:01 2020
run_pending Sat Nov 21 15:02:41 2020
run_pending Sat Nov 21 15:03:41 2020
run_pending Sat Nov 21 15:04:42 2020
run_pending Sat Nov 21 15:05:42 2020
run_pending Sat Nov 21 15:06:42 2020
run_pending Sat Nov 21 15:07:42 2020
run_pending Sat Nov 21 15:08:42 2020
run_pending Sat Nov 21 15:09:42 2020
run_pending Sat Nov 21 15:10:42 2020
run_pending Sat Nov 21 15:11:42 2020
run_pending Sat Nov 21 15:12:42 2020
run_pending Sat Nov 21 15:13:42 2020
run_pending Sat Nov 21 15:14:42 2020
run_pending Sat Nov 21 15:15:42 2020
run_pending Sat Nov 21 15:16:42 2020
run_pending Sat Nov 21 15:17:42 2020
run_pending Sat Nov 21 15:18:42 2020
run_pending Sat Nov 21 15:19:42 2020
run_pending Sat Nov 21 15:20:42 2020
run_pending Sat Nov 21 15:21:42 2020
run_pending Sat Nov 21 15:22:42 2020
run_pending Sat Nov 21 15:23:42 2020
run_pending Sat Nov 21 15:24:42 2020
run_pending Sat Nov 21 15:25:42 2020
run_pending Sat Nov 21 15:26:43 2020
run_pending Sat Nov 21 15:27:43 2020
run_pending Sat Nov 21 15:28:43 2020
run_pending Sat Nov 21 15:29:43 2020
run_pending Sat Nov 21 15:30:43 2020
run_pending Sat Nov 21 15:31:43 2020
run_pending Sat Nov 21 15:32:43 2020
run_pending Sat Nov 21 15:33:43 2020
run_pending Sat Nov 21 15:34:43 2020
run_pending Sat Nov 21 15:35:43 2020
run_pending Sat Nov 21 15:36:43 2020
run_pending Sat Nov 21 15:37:43 2020
run_pending Sat Nov 21 15:38:43 2020
run_pending Sat Nov 21 15:39:43 2020
run_pending Sat Nov 21 15:40:43 2020
run_pending Sat Nov 21 15:41:43 2020
run_pending Sat Nov 21 15:42:43 2020
run_pending Sat Nov 21 15:43:43 2020
run_pending Sat Nov 21 15:44:43 2020
run_pending Sat Nov 21 15:45:43 2020
run_pending Sat Nov 21 15:46:43 2020
run_pending Sat Nov 21 15:47:44 2020
run_pending Sat Nov 21 15:48:44 2020
run_pending Sat Nov 21 15:49:44 2020
run_pending Sat Nov 21 15:50:44 2020
run_pending Sat Nov 21 15:51:44 2020
run_pending Sat Nov 21 15:52:44 2020
run_pending Sat Nov 21 15:53:44 2020
run_pending Sat Nov 21 15:54:44 2020
run_pending Sat Nov 21 15:55:44 2020
run_pending Sat Nov 21 15:56:44 2020
run_pending Sat Nov 21 15:57:44 2020
run_pending Sat Nov 21 15:58:44 2020
run_pending Sat Nov 21 15:59:44 2020
run_pending Sat Nov 21 16:00:44 2020
job Sat Nov 21 16:00:44 2020
run_pending Sat Nov 21 16:03:24 2020
run_pending Sat Nov 21 16:04:24 2020
run_pending Sat Nov 21 16:05:24 2020
run_pending Sat Nov 21 16:06:24 2020
run_pending Sat Nov 21 16:07:24 2020
run_pending Sat Nov 21 16:08:24 2020
run_pending Sat Nov 21 16:09:25 2020
run_pending Sat Nov 21 16:10:25 2020
run_pending Sat Nov 21 16:11:25 2020
run_pending Sat Nov 21 16:12:25 2020
run_pending Sat Nov 21 16:13:25 2020
run_pending Sat Nov 21 16:14:25 2020
run_pending Sat Nov 21 16:15:25 2020
run_pending Sat Nov 21 16:16:25 2020
run_pending Sat Nov 21 16:17:25 2020
run_pending Sat Nov 21 16:18:25 2020
run_pending Sat Nov 21 16:19:25 2020
run_pending Sat Nov 21 16:20:25 2020
run_pending Sat Nov 21 16:21:25 2020
run_pending Sat Nov 21 16:22:25 2020
run_pending Sat Nov 21 16:23:25 2020
run_pending Sat Nov 21 16:24:25 2020
run_pending Sat Nov 21 16:25:25 2020
run_pending Sat Nov 21 16:26:25 2020
run_pending Sat Nov 21 16:27:25 2020
run_pending Sat Nov 21 16:28:25 2020
run_pending Sat Nov 21 16:29:25 2020
run_pending Sat Nov 21 16:30:26 2020
run_pending Sat Nov 21 16:31:26 2020
run_pending Sat Nov 21 16:32:26 2020
run_pending Sat Nov 21 16:33:26 2020
run_pending Sat Nov 21 16:34:26 2020
run_pending Sat Nov 21 16:35:26 2020
run_pending Sat Nov 21 16:36:26 2020
run_pending Sat Nov 21 16:37:26 2020
run_pending Sat Nov 21 16:38:26 2020
run_pending Sat Nov 21 16:39:26 2020
run_pending Sat Nov 21 16:40:26 2020
run_pending Sat Nov 21 16:41:26 2020
run_pending Sat Nov 21 16:42:26 2020
run_pending Sat Nov 21 16:43:26 2020
run_pending Sat Nov 21 16:44:26 2020
run_pending Sat Nov 21 16:45:26 2020
run_pending Sat Nov 21 16:46:26 2020
run_pending Sat Nov 21 16:47:26 2020
run_pending Sat Nov 21 16:48:26 2020
run_pending Sat Nov 21 16:49:26 2020
run_pending Sat Nov 21 16:50:26 2020
run_pending Sat Nov 21 16:51:26 2020
run_pending Sat Nov 21 16:52:27 2020
run_pending Sat Nov 21 16:53:27 2020
run_pending Sat Nov 21 16:54:27 2020
run_pending Sat Nov 21 16:55:27 2020
run_pending Sat Nov 21 16:56:27 2020
run_pending Sat Nov 21 16:57:27 2020
run_pending Sat Nov 21 16:58:27 2020
run_pending Sat Nov 21 16:59:27 2020
run_pending Sat Nov 21 17:00:27 2020
job Sat Nov 21 17:00:27 2020
run_pending Sat Nov 21 17:03:07 2020
run_pending Sat Nov 21 17:04:07 2020
run_pending Sat Nov 21 17:05:07 2020
run_pending Sat Nov 21 17:06:07 2020
run_pending Sat Nov 21 17:07:07 2020
run_pending Sat Nov 21 17:08:07 2020
run_pending Sat Nov 21 17:09:07 2020
run_pending Sat Nov 21 17:10:07 2020
run_pending Sat Nov 21 17:11:07 2020
run_pending Sat Nov 21 17:12:07 2020
run_pending Sat Nov 21 17:13:07 2020
run_pending Sat Nov 21 17:14:07 2020
run_pending Sat Nov 21 17:15:08 2020
run_pending Sat Nov 21 17:16:08 2020
run_pending Sat Nov 21 17:17:08 2020
run_pending Sat Nov 21 17:18:08 2020
run_pending Sat Nov 21 17:19:08 2020
run_pending Sat Nov 21 17:20:08 2020
run_pending Sat Nov 21 17:21:08 2020
run_pending Sat Nov 21 17:22:08 2020
run_pending Sat Nov 21 17:23:08 2020
run_pending Sat Nov 21 17:24:08 2020
run_pending Sat Nov 21 17:25:08 2020
run_pending Sat Nov 21 17:26:08 2020
run_pending Sat Nov 21 17:27:08 2020
run_pending Sat Nov 21 17:28:08 2020
run_pending Sat Nov 21 17:29:08 2020
run_pending Sat Nov 21 17:30:08 2020
run_pending Sat Nov 21 17:31:08 2020
run_pending Sat Nov 21 17:32:08 2020
run_pending Sat Nov 21 17:34:08 2020
run_pending Sat Nov 21 17:35:08 2020
run_pending Sat Nov 21 17:36:08 2020
run_pending Sat Nov 21 17:37:08 2020
run_pending Sat Nov 21 17:38:09 2020
run_pending Sat Nov 21 17:39:09 2020
run_pending Sat Nov 21 17:40:09 2020
run_pending Sat Nov 21 17:41:09 2020
run_pending Sat Nov 21 17:42:09 2020
run_pending Sat Nov 21 17:43:09 2020
run_pending Sat Nov 21 17:44:09 2020
run_pending Sat Nov 21 17:45:09 2020
run_pending Sat Nov 21 17:46:09 2020
run_pending Sat Nov 21 17:47:09 2020
run_pending Sat Nov 21 17:48:09 2020
run_pending Sat Nov 21 17:49:09 2020
run_pending Sat Nov 21 17:50:09 2020
run_pending Sat Nov 21 17:51:09 2020
run_pending Sat Nov 21 17:52:09 2020
run_pending Sat Nov 21 17:53:09 2020
run_pending Sat Nov 21 17:54:09 2020
run_pending Sat Nov 21 17:55:09 2020
run_pending Sat Nov 21 17:56:09 2020
run_pending Sat Nov 21 17:57:09 2020
run_pending Sat Nov 21 17:58:09 2020
run_pending Sat Nov 21 17:59:09 2020
run_pending Sat Nov 21 18:00:09 2020
job Sat Nov 21 18:00:09 2020
run_pending Sat Nov 21 18:02:50 2020
run_pending Sat Nov 21 18:03:50 2020
run_pending Sat Nov 21 18:04:50 2020
run_pending Sat Nov 21 18:05:50 2020
run_pending Sat Nov 21 18:06:50 2020
killed

In this example there is always 60 seconds of sleep-time between execution of run_pending. Because run_pending itself takes a tiny bit of time to execute, over a long period of time, the second at which run_pending is executed drifts. In the beginning we observe that run_pending is executed at the 16th second, later at the 18th second.

Using at(':00'), the job is scheduled to run at the first minute of the hour. Jobs run when run_pending is called. Therefore the job sometimes runs at the 1th second of the first minute of the hour (15:00:01), and sometimes at the 18th second (14:00:18).

We can conclude it is possible to schedule jobs at whole hours using the .at(':00') syntax.

from schedule.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.