Python 在WSGI环境中启动单独的线程

Python 在WSGI环境中启动单独的线程,python,multithreading,wsgi,werkzeug,Python,Multithreading,Wsgi,Werkzeug,很难找到其他已经实施类似措施的案例 我有一个使用Werkzeug构建的WSGI应用程序,如果可能的话,我希望在与WSGI应用程序相同的上下文中运行一些后台清理过程(我不希望在cron中使用单独的脚本,这样当应用程序作为服务启动时,必要的后台任务也会运行)正在使用的Web服务器是带有mod_wsgi的Apache 让我们假设一个非常基本的WSGI示例,因为所提供的内容实际上没有问题。我要用Pocoo在 在create_app函数中启动另一个非阻塞执行线程是否可行,该线程将继续执行并按定时间隔执行这

很难找到其他已经实施类似措施的案例

我有一个使用Werkzeug构建的WSGI应用程序,如果可能的话,我希望在与WSGI应用程序相同的上下文中运行一些后台清理过程(我不希望在cron中使用单独的脚本,这样当应用程序作为服务启动时,必要的后台任务也会运行)正在使用的Web服务器是带有mod_wsgi的Apache

让我们假设一个非常基本的WSGI示例,因为所提供的内容实际上没有问题。我要用Pocoo在

create_app
函数中启动另一个非阻塞执行线程是否可行,该线程将继续执行并按定时间隔执行这些任务?mod_wsgi是否按照要求“连续”运行应用程序

def create_app(redis_host='localhost', redis_port=6379):
    app = Shortly({
        'redis_host':       redis_host,
        'redis_port':       redis_port
    })

    #do some other stuff in a separate thread while the webapp is running
    task = threading.Thread(target=DBCleanup, args=(query, stuff))
    task.start()
    return app
阅读:

请参阅中的代码监视器示例:

第一个示例介绍了如何在请求结束和流程结束时清理内容


第二个演示了如何创建后台线程来按周期执行任务,并在进程退出时正确尝试关闭后台线程。

为什么WSGI应用程序不能将其作为守护进程启动,并在退出时关闭它?@IgnacioVazquez Abrams我的答案是守护进程的事情让我害怕,这是不是很糟糕?;)从来没有用Python编写过这样的脚本。你知道这方面有什么好的入门读物吗?谢谢
def create_app(redis_host='localhost', redis_port=6379):
    app = Shortly({
        'redis_host':       redis_host,
        'redis_port':       redis_port
    })

    #do some other stuff in a separate thread while the webapp is running
    task = threading.Thread(target=DBCleanup, args=(query, stuff))
    task.start()
    return app