【发布时间】:2016-10-09 19:02:13
【问题描述】:
我想在我的 Django 应用程序中执行某个任务(函数),从调用它开始的指定持续时间。比如:
... some code
async_run_func(time_interval=15_mins) # Async call. Code within the function
# should be executed after 15 mins.
... some more code
async_run_func 将在某个自定义间隔后执行。
实现这一目标的正确方法是什么?一种方法是创建一个单独的线程并将其休眠time_duration 期间。但这会导致服务器上的线程过多。此外,如果重新启动 gunicorn 进程,状态将丢失。我希望信息持久。所以,我不想采用这种方法。目前我正在使用 celery 来执行长时间的异步和周期性任务。但是 celery 不允许选项在指定的持续时间后单次运行函数。
如果在分布式系统上无论如何都可以做到这一点,那就太好了。例如,函数将从一个系统调用,但代码要在另一个系统上执行(使用像 RabbitMQ 这样的队列对我来说很好)。否则,我也可以在同一台机器上执行它。有什么建议吗?
【问题讨论】:
标签: python django multithreading django-celery