Comments (4)
经过我研究,目前发现以下情况:
使用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.
目前情况是这样的,我参考其他程序移植过来后,一些额外的字段我还没精力逐一测试。所以只能先保证最基本的功能能用,因此你提的这个确实有可能是bug。欢迎提PR。
from celery-sqlalchemy-scheduler.
好的,有时间我看下。
from celery-sqlalchemy-scheduler.
已修复,发布了v0.2.2。请验证~
from celery-sqlalchemy-scheduler.
Related Issues (20)
- Crontab Error HOT 1
- Dynamic update of the celery_crontab_schedule table? HOT 4
- Interval task 恢复enabled无法send task HOT 1
- The enabled interval schedule is not triggering If we add new Periodic Tasks to the database HOT 5
- 是否可以动态的添加修改定时任务 HOT 3
- Recursion error on repr for IntervalSchedule object HOT 1
- crontab 任务不发送 HOT 2
- Deleted schedule isn't removed from DatabaseScheduler.schedule in memory HOT 3
- celery-sqlalchemy-scheduler not working with ver 5.0.1 of Celery HOT 6
- Periodic tasks are being deleted. HOT 3
- Updating the celery_periodic_task_changed triggers ALL the existing tasks now. HOT 1
- Beat
- Future date periodic task blocking other tasks
- Beat was unable to find crontab task in the database HOT 1
- 新增任务或者修改状态,beat会报错并中止进程 HOT 1
- `celery_sqlalchemy_scheduler` does not run att all.
- "Connection is busy" error with SQL Server connection HOT 1
- CrontabSchedule addition in PeriodicTask gives error
- 更改了start_time以后会暂停所有任务的调度
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 celery-sqlalchemy-scheduler.