我一直在寻找一种在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线程模块上执行此操作?
答案 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)