在瓶应用程序中长时间运行的后台任务

时间:2015-10-05 08:56:22

标签: python multithreading celery bottle background-task

我一直在寻找一种在Python Bottle应用程序中运行连续后台任务的方法,同时使用Gevent处理请求:

from gevent import monkey; monkey.patch_all()
from time import sleep
from bottle import route, run

# run_background_function()
# ^^^^ starts a single background task that runs every few seconds
# and continues for the life of the whole Bottle application.

@route('/simple-request')
def simple_request():
    # a simple function that returns a rendered page and
    # is capable of serving multiple requests
    return rendered_page()

run(host='0.0.0.0', port=8080, server='gevent')

我已经读过很多stackoverflow线程和7个完整的教程,包括Gevent,threading,celery,rabbitmq,redis,并且不知道我应该用什么来实现这个能力。 Celery,RabbitMQ和Redis对于运行这一个后台任务来说都显得非常困难和过度,而且如果可能的话,我更愿意继续使用Python标准库中的选项。

到目前为止,我发现的教程非常基础,然后突然跳入包括第三方库,套接字,特定Web框架等。是否有办法在Python线程模块上执行此操作?

1 个答案:

答案 0 :(得分:1)

您可以使用multiprocessing执行此操作:

from multiprocessing import Queue, Process

def processor():
    setproctitle('%s - processor ' % (__file__,))

    while True:
        time.sleep(1)
        do_stuff()

my_processor = Process(target=processor)