Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix long period task will never be triggered #717

Merged
merged 5 commits into from
Nov 7, 2024
Merged

Conversation

daydaychen
Copy link
Contributor

Here, the entry reload time is taken as the default value when last_run_at is None,
and this value will be updated every time the schedule is updated/added.

For a periodic task with a long period, such as three days, if there is always an update/add within three days, the periodic task will never be triggered.

@daydaychen daydaychen force-pushed the main branch 2 times, most recently from 64570cc to 28ea74e Compare January 19, 2024 06:42
Copy link
Contributor Author

@daydaychen daydaychen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The side effect is that adding a periodic task will trigger once first.

@auvipy
Copy link
Member

auvipy commented Jan 19, 2024

The side effect is that adding a periodic task will trigger once first.

can you elaborate more on this please?

Copy link
Member

@auvipy auvipy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we need proper unit test for the change to make sure there won't be any regression

Copy link
Contributor Author

@daydaychen daydaychen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The side effect is that adding a periodic task will trigger once first.

can you elaborate more on this please?

When the last_run_at value is None, it defaults to the reload time of the entry.

For example, the first trigger time of a three-day interval scheduled task should be last_run_at +3 days, but each time the schedule_changed method return True, the entry will be re-instantiated and the last_run_at will be updated.

This can be a problem for the schedule_changed method frequently triggered by the management panel, because the last_run_at method will be frequently refreshed and may never be executed as planned.

Sorry, there were some side effects for the previous implementation.

I made some changes to the initial value of last_run_at.

Now, if it's None, it will be fetched from date_changed.

In this way, the default value of last_run_at will not affected by the schedule_changed, the above problems can be solved.

Copy link
Contributor Author

@daydaychen daydaychen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we need proper unit test for the change to make sure there won't be any regression

Ok, I'll make up the unit test later.

Copy link
Member

@auvipy auvipy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

waiting for unit tests to make sure this will not create any regression

@auvipy
Copy link
Member

auvipy commented Jun 13, 2024

we need unit tests to make sure this won't create any regression/ unintended side effect

@Akhilesh-Sirohi
Copy link

@daydaychen any particular reason this PR isn't merged yet. I am facing the same issue here and thinking of implementing the same solution.

@cclauss cclauss requested a review from auvipy November 1, 2024 06:06
@auvipy
Copy link
Member

auvipy commented Nov 4, 2024

ugh! forgot to review it! going to review it right now!

@auvipy auvipy merged commit 476be26 into celery:main Nov 7, 2024
17 checks passed
auvipy pushed a commit that referenced this pull request Jan 12, 2025
* fix for missing periodic task name in results

* fix error in admin, add to scheduler headers,tests

* Add Python 3.13 to the testing (#813)

* https://www.python.org/downloads/release/python-3130/
* https://pythoninsider.blogspot.com/2024/10/python-3130-final-released.html
* https://devguide.python.org/versions/
* https://docs.djangoproject.com/en/stable/faq/install/#what-python-version-can-i-use-with-django

* [pre-commit.ci] pre-commit autoupdate (#814)

updates:
- [github.com/asottile/pyupgrade: v3.17.0 → v3.18.0](asottile/pyupgrade@v3.17.0...v3.18.0)
- [github.com/adamchainz/django-upgrade: 1.21.0 → 1.22.1](adamchainz/django-upgrade@1.21.0...1.22.1)
- [github.com/tox-dev/pyproject-fmt: 2.2.4 → 2.3.0](tox-dev/pyproject-fmt@2.2.4...2.3.0)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* formatting changes

* [pre-commit.ci] pre-commit autoupdate (#815)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.6.9 → v0.7.0](astral-sh/ruff-pre-commit@v0.6.9...v0.7.0)
- [github.com/tox-dev/pyproject-fmt: 2.3.0 → 2.4.3](tox-dev/pyproject-fmt@2.3.0...2.4.3)
- [github.com/abravalheri/validate-pyproject: v0.20.2 → v0.21](abravalheri/validate-pyproject@v0.20.2...v0.21)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#817)

updates:
- [github.com/asottile/pyupgrade: v3.18.0 → v3.19.0](asottile/pyupgrade@v3.18.0...v3.19.0)
- [github.com/astral-sh/ruff-pre-commit: v0.7.0 → v0.7.1](astral-sh/ruff-pre-commit@v0.7.0...v0.7.1)
- [github.com/tox-dev/pyproject-fmt: 2.4.3 → v2.4.3](tox-dev/pyproject-fmt@2.4.3...v2.4.3)
- [github.com/abravalheri/validate-pyproject: v0.21 → v0.22](abravalheri/validate-pyproject@v0.21...v0.22)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix 'exipres' not working normal as expected (#816)

related issuses: 240

* [pre-commit.ci] pre-commit autoupdate (#820)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.7.1 → v0.7.2](astral-sh/ruff-pre-commit@v0.7.1...v0.7.2)
- [github.com/tox-dev/pyproject-fmt: v2.4.3 → v2.5.0](tox-dev/pyproject-fmt@v2.4.3...v2.5.0)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix long period task will never be triggered (#717)

* fix long period task will never be triggered

* fix (schedulers): when model.date_changed is None, use _default.now()

* test (schedulers): add test for when model.last_run_at is None

* test (scheduler): revise the comment

---------

Co-authored-by: chentiantian <[email protected]>

* [pre-commit.ci] pre-commit autoupdate (#823)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.7.2 → v0.7.3](astral-sh/ruff-pre-commit@v0.7.2...v0.7.3)
- [github.com/abravalheri/validate-pyproject: v0.22 → v0.23](abravalheri/validate-pyproject@v0.22...v0.23)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Bump codecov/codecov-action from 4 to 5 (#825)

Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4 to 5.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@v4...v5)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#826)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.7.3 → v0.7.4](astral-sh/ruff-pre-commit@v0.7.3...v0.7.4)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#827)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.7.4 → v0.8.0](astral-sh/ruff-pre-commit@v0.7.4...v0.8.0)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#829)

updates:
- [github.com/adamchainz/django-upgrade: 1.22.1 → 1.22.2](adamchainz/django-upgrade@1.22.1...1.22.2)
- [github.com/astral-sh/ruff-pre-commit: v0.8.0 → v0.8.1](astral-sh/ruff-pre-commit@v0.8.0...v0.8.1)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#830)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.8.1 → v0.8.2](astral-sh/ruff-pre-commit@v0.8.1...v0.8.2)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix for missing periodic task name in results

* fix error in admin, add to scheduler headers,tests

* formatting changes

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Christian Clauss <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: x-7 <[email protected]>
Co-authored-by: chentt <[email protected]>
Co-authored-by: chentiantian <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants