有什么方法可以使@periodic_task仅在呼叫中运行,它在项目启动时自动运行?



有没有办法让periodic_task只在电话中运行,我看到Pingit()一旦我运行我的 django 应用程序python manage.py runserver就会启动

@periodic_task(run_every=crontab(minute="*/1"),options={"task_id":task_name})
def Pingit():
print('Every Minute Im Called')

我想让它运行定期任务,只有当我通过Pingit调用它时。

为此最好使用@task并让它在执行后重新排队,例如:

@app.task
def pingit(count=0):
if count < 60 * 24 * 7:  # 7 days in minutes
print('Every Minute Im Called')
# Queue a new task to run in 1 minute
pingit.apply_async(kwargs={'count': count + 1}, countdown=60)
# Start the task manually
pingit.apply_async()

如果需要向函数添加位置参数,可以使用args指定这些参数。例如,要传递name参数:

@app.task
def pingit(name, count=0):
if count < 60 * 24 * 7:  # 7 days in minutes
print('Every Minute Im Called')
# Queue a new task to run in 1 minute
pingit.apply_async(args=[name], kwargs={'count': count + 1}, countdown=60)
# Start the task manually
pingit.apply_async(args=['MyName'])

相关内容

  • 没有找到相关文章

最新更新