python-返回Flask响应(托管在Heroku上)后如何执行功能?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-返回Flask响应(托管在Heroku上)后如何执行功能?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1801字,纯文字阅读大概需要3分钟。
内容图文
![python-返回Flask响应(托管在Heroku上)后如何执行功能?](/upload/InfoBanner/zyjiaocheng/663/f33ff21093df4ba49bbfd5c896f55292.jpg)
虽然我听说我需要使用一种称为“作业队列”的东西,但我对此并不陌生,我很难设置所有内容.在烧瓶中返回响应后如何执行功能?您能指导我完成此过程吗?
解决方法:
所以我发现这是非常容易做到的,甚至在heroku上更容易实现,问题在于文档非常分散,对于那些刚刚发现工作队列的人来说,它可能会让人不知所措.
对于此示例,我将在Heroku上使用Reddis To Go插件,因此,您要做的第一件事就是从仪表板上安装它.之后,您也设置了烧瓶应用程序,如下所示:
from flask import Flask
from rq import Queue
from redis import Redis
import os
import urllib.parse as urlparse
app = Flask(__name__)
def function_to_queue():
return "finished"
# Tell RQ what Redis connection to use and parse url from the global variable that was added by the addon
redis_url = os.getenv('REDISTOGO_URL')
urlparse.uses_netloc.append('redis')
url = urlparse.urlparse(redis_url)
conn = Redis(host=url.hostname, port=url.port, db=0, password=url.password)
q = Queue(connection=conn) #no args implies the default queue
@app.route('/')
def hello():
ob = q.enqueue(function_to_queue) #Add previously defined function to queue
return "k?"
if __name__ == '__main__':
app.run()
接下来,您必须使用以下代码创建名为run-worker.py的python脚本:
import os
import urllib.parse as urlparse
from redis import Redis
from rq import Worker, Queue, Connection
listen = ['high', 'default', 'low']
redis_url = os.getenv('REDISTOGO_URL')
if not redis_url:
raise RuntimeError('Set up Redis To Go first.')
urlparse.uses_netloc.append('redis')
url = urlparse.urlparse(redis_url)
conn = Redis(host=url.hostname, port=url.port, db=0, password=url.password)
with Connection(conn):
worker = Worker(map(Queue, listen))
worker.work()
现在,只需在heroku上修改Procfile如下所示:
web: gunicorn hello:app --log-file -
worker: python -u run-worker.py
部署它,确保同时启动了工作程序和应用程序……然后完成.希望这有助于其他人更快地了解工作排队.
内容总结
以上是互联网集市为您收集整理的python-返回Flask响应(托管在Heroku上)后如何执行功能?全部内容,希望文章能够帮你解决python-返回Flask响应(托管在Heroku上)后如何执行功能?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。