作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我每秒都在运行一个任务,而 celery 似乎并没有真正每秒执行该任务。
我猜想 celery 对于每 1 分钟的任务来说可能是一个很好的调度程序,但可能不足以满足每第二个任务的需要。
下面的图片说明了我的意思。
我正在使用以下选项
'schedule': 1.0,
'args': [],
'options': {
'expires': 3
}
我使用的是 celery 4.0.0
最佳答案
是的,Celery 实际上处理的时间低至 1 秒,而且可能更低,因为它需要 float 。请参阅文档 http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html 中的周期性任务条目:
from celery import Celery
from celery.schedules import crontab
app = Celery()
@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
# Calls test('hello') every 10 seconds.
sender.add_periodic_task(10.0, test.s('hello'), name='add every 10')
# Calls test('world') every 30 seconds
sender.add_periodic_task(30.0, test.s('world'), expires=10)
# Executes every Monday morning at 7:30 a.m.
sender.add_periodic_task(
crontab(hour=7, minute=30, day_of_week=1),
test.s('Happy Mondays!'),
)
@app.task
def test(arg):
print(arg)
可以在 1/3 处找到更好的编写示例 https://github.com/celery/celery/issues/3589 :
# file: tasks.py
from celery import Celery
celery = Celery('tasks', broker='pyamqp://guest@localhost//')
@celery.task
def add(x, y):
return x + y
@celery.on_after_configure.connect
def add_periodic(**kwargs):
celery.add_periodic_task(10.0, add.s(2,3), name='add every 10')
因此 sender
是实际的 Celery 代理,即 app = Celery()
关于celery - 我可以使用 celery 来完成每秒钟的任务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40846920/
我是一名优秀的程序员,十分优秀!