Comments (6)
I was looking at this project after searching "Golang cron", and liked the idea, but wanted to build it differently without reflection, so I rolled my own. I think the issue is that all the jobs are being run on the same thread, thus if a job of yours takes more than a second, all of your jobs will be delayed by that much.
Looking at the code, it'll take some tinkering to make it work properly, as the job.run()
function returns some values from the task, making spinning off a new goroutine a little more tricky. I guess, my question is why do we need to return the result of the task? It looks like the only time that's used is in NextRun()
.
I'm finding it a little hard to see where that would be useful. If we dropped needing to return the result of the task, we could rewrite the job.run()
function like:
func (j *Job) run() {
// ...
// Instead of throwing an error here when the task is running,
// why not throw an error when the task is added to the scheduler?
// if len(params) != f.Type().NumIn() {
// err = errors.New("The number of param is not adapted.")
// return
// }
// ...
go f.Call(in) // spin off a goroutine so as not to delay subsequent tasks
j.lastRun = time.Now()
j.scheduleNextRun()
}
My cursory testing shows this to work, but I've hardly been exhaustive with it. That's my suggestion anyway.
from gocron.
@jasonlvhit what's the status of this issue? Any plans to resolve? I'm seeing some similar behavior in my project, and honestly if this is not resolved I will need to move away from this lib.
from gocron.
I have the same problems with my projects. All delay by some time. It's not exactly the time the tasks take to execute.
If I execute tasks every 10 seconds (which takes 1 second of processing time) they get delayed by 1 second most of the time. This is an incredible impact if I run tasks on another projects once a day. They take up to 2 hours to process and the delayed amount is always more than 30mins+ ! Please fix this. You cannot schedule a task at 03:00 AM and after a week it's running at 07:00 AM...
from gocron.
Does #57 could resolve this issue ?
from gocron.
Yes #57 solves it, I had the same issue
from gocron.
Come checkout https://github.com/go-co-op/gocron where we have an active fork of this repo!
from gocron.
Related Issues (20)
- One cron job that run multiple functions
- At schedules job at specific time with second HOT 1
- Consider the location implementation HOT 1
- Expressing doubts HOT 4
- Every second Thursday HOT 1
- The cron does not run if the function has a argument.
- Lock function, still run multiple times on multiple server instances HOT 3
- getRunnableJobs runnableJobs is not needed HOT 2
- Proposal: Please start using Semantic Versioning HOT 4
- Duplicate function call in Every WeekDay HOT 1
- Is Day working properly?
- Async Scheduler HOT 2
- Schedule task every X hours from a date in the past HOT 2
- exec time HOT 1
- About task execution time HOT 1
- How to make stop Scheduler? HOT 1
- Use slice instead of array HOT 1
- .Do overrides existing cron tasks HOT 1
- Dockerfile with gocron HOT 1
- Job running twice even if scheduled only once in sporadic manner.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gocron.