GithubHelp home page GithubHelp logo

Comments (4)

AngelLiang avatar AngelLiang commented on May 28, 2024 1

经过我研究,目前发现以下情况:

使用examples/base/tasks.py启动celery,再使用官方的定时器celery.beat.PersistentScheduler启动。

beat_schedule配置如下:

beat_schedule = {
    'echo-every-3-seconds': {
        'task': 'tasks.echo',
        'schedule': timedelta(seconds=3),
        'args': ('hello', ),
        'options': {
            'expires': dt.datetime.utcnow() + timedelta(seconds=10)  # add
        }
    }
...

定时器那边并不会停止send due task,而celery这边会检查任务是否过期。具体请看下面日志:

  • 09:25:29,打印hello
  • 09:25:32,直接报expires[xxx]信息。
  • 然后下面是一条 revoked task(取消任务)信息。
...
[2019-08-31 09:25:29,505: INFO/MainProcess] Received task: tasks.echo[52bfa231-be41-47fa-945c-10bdbcb3d98a]   expires:[2019-08-31 09:25:30.400685+08:00]
[2019-08-31 09:25:29,506: WARNING/SpawnPoolWorker-1] hello
[2019-08-31 09:25:29,506: INFO/SpawnPoolWorker-1] Task tasks.echo[52bfa231-be41-47fa-945c-10bdbcb3d98a] succeeded in 0.0s: None
[2019-08-31 09:25:32,505: INFO/MainProcess] Received task: tasks.echo[5ea1c9a3-a943-4e54-92a3-af2e6bdd88c5]   expires:[2019-08-31 09:25:30.400685+08:00]
[2019-08-31 09:25:32,505: INFO/MainProcess] Discarding revoked task: tasks.echo[5ea1c9a3-a943-4e54-92a3-af2e6bdd88c5]
...

完整日志如下:

celery-sqlalchemy-scheduler\examples\base> celery worker -A tasks:celery -l info
...
[2019-08-31 09:25:20,536: INFO/MainProcess] Received task: tasks.echo[f57b8f62-4bc2-47ae-a80e-b6b67af7b756]   expires:[2019-08-31 09:25:30.400685+08:00]
[2019-08-31 09:25:20,537: WARNING/SpawnPoolWorker-1] hello
[2019-08-31 09:25:20,541: INFO/MainProcess] Received task: tasks.add[a5a6e20a-5b9c-40e6-8d43-db09ec2fcca7]
[2019-08-31 09:25:20,567: INFO/SpawnPoolWorker-1] Task tasks.echo[f57b8f62-4bc2-47ae-a80e-b6b67af7b756] succeeded in 0.032000000000152795s: None
[2019-08-31 09:25:20,571: INFO/SpawnPoolWorker-2] Task tasks.add[a5a6e20a-5b9c-40e6-8d43-db09ec2fcca7] succeeded in 0.03099999999994907s: 3
[2019-08-31 09:25:23,504: INFO/MainProcess] Received task: tasks.echo[b7b8d8c3-5bf3-4c88-9fbf-30f5d49501ba]   expires:[2019-08-31 09:25:30.400685+08:00]
[2019-08-31 09:25:23,505: WARNING/SpawnPoolWorker-4] hello
[2019-08-31 09:25:23,537: INFO/SpawnPoolWorker-4] Task tasks.echo[b7b8d8c3-5bf3-4c88-9fbf-30f5d49501ba] succeeded in 0.03099999999994907s: None
[2019-08-31 09:25:26,504: INFO/MainProcess] Received task: tasks.echo[93728b60-f33f-45d5-b9b7-2cfe0e02794b]   expires:[2019-08-31 09:25:30.400685+08:00]
[2019-08-31 09:25:26,505: WARNING/SpawnPoolWorker-3] hello
[2019-08-31 09:25:26,536: INFO/SpawnPoolWorker-3] Task tasks.echo[93728b60-f33f-45d5-b9b7-2cfe0e02794b] succeeded in 0.03099999999994907s: None
[2019-08-31 09:25:29,505: INFO/MainProcess] Received task: tasks.echo[52bfa231-be41-47fa-945c-10bdbcb3d98a]   expires:[2019-08-31 09:25:30.400685+08:00]
[2019-08-31 09:25:29,506: WARNING/SpawnPoolWorker-1] hello
[2019-08-31 09:25:29,506: INFO/SpawnPoolWorker-1] Task tasks.echo[52bfa231-be41-47fa-945c-10bdbcb3d98a] succeeded in 0.0s: None
[2019-08-31 09:25:32,505: INFO/MainProcess] Received task: tasks.echo[5ea1c9a3-a943-4e54-92a3-af2e6bdd88c5]   expires:[2019-08-31 09:25:30.400685+08:00]
[2019-08-31 09:25:32,505: INFO/MainProcess] Discarding revoked task: tasks.echo[5ea1c9a3-a943-4e54-92a3-af2e6bdd88c5]
[2019-08-31 09:25:35,505: INFO/MainProcess] Received task: tasks.echo[ac575c13-2aa8-40e9-bd14-3a84913f7300]   expires:[2019-08-31 09:25:30.400685+08:00]
[2019-08-31 09:25:35,505: INFO/MainProcess] Discarding revoked task: tasks.echo[ac575c13-2aa8-40e9-bd14-3a84913f7300]
[2019-08-31 09:25:38,506: INFO/MainProcess] Received task: tasks.echo[69d2be05-a188-40ca-a947-55adfc6f4613]   expires:[2019-08-31 09:25:30.400685+08:00]
[2019-08-31 09:25:38,506: INFO/MainProcess] Discarding revoked task: tasks.echo[69d2be05-a188-40ca-a947-55adfc6f4613]
examples\base> celery beat -A tasks:celery  -l info
celery beat v4.2.2 (windowlicker) is starting.
...
[2019-08-31 09:25:20,473: INFO/MainProcess] beat: Starting...
[2019-08-31 09:25:20,517: INFO/MainProcess] Scheduler: Sending due task echo-every-3-seconds (tasks.echo)
[2019-08-31 09:25:20,539: INFO/MainProcess] Scheduler: Sending due task add-every-minutes (tasks.add)
[2019-08-31 09:25:23,502: INFO/MainProcess] Scheduler: Sending due task echo-every-3-seconds (tasks.echo)
[2019-08-31 09:25:26,502: INFO/MainProcess] Scheduler: Sending due task echo-every-3-seconds (tasks.echo)
[2019-08-31 09:25:29,503: INFO/MainProcess] Scheduler: Sending due task echo-every-3-seconds (tasks.echo)
[2019-08-31 09:25:32,503: INFO/MainProcess] Scheduler: Sending due task echo-every-3-seconds (tasks.echo)
[2019-08-31 09:25:35,503: INFO/MainProcess] Scheduler: Sending due task echo-every-3-seconds (tasks.echo)
[2019-08-31 09:25:38,504: INFO/MainProcess] Scheduler: Sending due task echo-every-3-seconds (tasks.echo)

from celery-sqlalchemy-scheduler.

AngelLiang avatar AngelLiang commented on May 28, 2024

目前情况是这样的,我参考其他程序移植过来后,一些额外的字段我还没精力逐一测试。所以只能先保证最基本的功能能用,因此你提的这个确实有可能是bug。欢迎提PR。

from celery-sqlalchemy-scheduler.

grayguest avatar grayguest commented on May 28, 2024

好的,有时间我看下。

from celery-sqlalchemy-scheduler.

AngelLiang avatar AngelLiang commented on May 28, 2024

已修复,发布了v0.2.2。请验证~

from celery-sqlalchemy-scheduler.

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.