【发布时间】:2014-04-23 00:33:53
【问题描述】:
我有一个使用 Python 的瓶子的分析服务,它通过将 URL 发布到原始数据来调用。
立即向被调用者返回 200 响应并继续处理应用程序中可能长时间运行的逻辑的最简单/最干净/最佳的方法是什么?
产生一个新的线程/进程?使用队列?异步?
from bottle import post, HTTPResponse, request
@post('/postprocess')
def records():
data_url = request.json.get('data_url', False)
postback_url = request.json.get('postback_url', False)
if not data_url or not postback_url:
return HTTPResponse(status=400, body="Missing data paramater")
#Immediately return response to callee
return HTTPResponse(status=200, body="Complete")
#Continue processing long-running code
result = get_and_process_data(data_url)
#POST result to another endpoint
【问题讨论】:
-
看看 Celery 或 python-rq 运行长后台任务。
-
我认为你需要使用线程:阅读这个:[Creating Threads in python][1] [1]:stackoverflow.com/questions/2905965/creating-threads-in-python
标签: python multithreading asynchronous message-queue bottle