首页 > 解决方案 > Heroku Django APScheduler 在作业完成后不释放内存

问题描述

我有一个 django 站点,它正在运行一些由 Heroku 上托管的 APScheduler 安排的繁重计算内容。一切都按预期工作,但是 Heroku 抛出错误“错误 R14(超出内存配额)”我发现了与此类似的其他帖子,链接,问题,但它们已过时,我无法让它们工作。我的代码在下面列出。我希望它在周一至周五的 800 到 1600 小时之间运行。我正在使用 heroku 的 PostgreSQL 数据库。最终内存使用量会变得如此之高,以至于崩溃并重新启动。

sched = BlockingScheduler(
    executors={
        'threadpool': ThreadPoolExecutor(max_workers=1),
        'processpool': ProcessPoolExecutor(max_workers=1)
    }
)


@sched.scheduled_job('cron', minute='*/30', day_of_week='mon-fri', hour='8-18', max_instances=1, id="server",
                     executor='threadpool')
def _server():
    print('Start server')
    server = Server()
    server.get_stocks()
    del server
    gc.collect()

sched.start()

我知道这是内存泄漏,因为在服务器启动之前clock.py 内存使用情况。 在此处输入图像描述

这是在服务器完成其工作并休息之后。 在此处输入图像描述

如果有人能指出我正确的方向,我愿意尝试任何事情。提前谢谢你。

标签: pythondjangoherokuapscheduler

解决方案


推荐阅读