【问题标题】:How do I run twisted with flask?我如何用烧瓶扭曲运行?
【发布时间】:2016-08-26 00:53:26
【问题描述】:

我希望能够在多个不同的目录上运行扭曲的服务器(exp:/example1/example2...等),所以我想我会使用flask。这是我目前所拥有的:

from flask import Flask
from twisted.web.server import Site
from twisted.web.wsgi import WSGIResource
from twisted.internet import reactor
from twisted.web.proxy import ReverseProxyResource
from twisted.web.resource import Resource

app = Flask(__name__)
@app.route('/example1')
def index():
    return 'My Twisted Flask'

flask_site = WSGIResource(reactor, reactor.getThreadPool(), app)

root = Resource()
root.putChild('my_flask', flask_site)

site_example = ReverseProxyResource('www.example.com', 80, ''.encode('utf-8'))
root.putChild('example1', site_example)

reactor.listenTCP(80, Site(root))
reactor.run()

唯一的问题是它不起作用,我不确定我做错了什么。感谢您的帮助,谢谢!

【问题讨论】:

  • 看起来你正试图在 Twisted 中运行 Flask 应用
  • 是的,我不太确定怎么做,但我希望能够在不同的目录下运行多个扭曲的服务器
  • 为什么要多台服务器?
  • 因为我想同时运行多个反向代理,所以当有人去myserver.com/example1它会显示一个网站的内容,但是当有人去myserver.com/example2它会显示内容不同的网站。

标签: python python-3.x flask twisted reverse-proxy


【解决方案1】:

我个人的看法:在 Twisted 的 reactor 中运行 Flask 并不是一个好主意,因为当 Flask 处理请求时,Twisted 的 reactor 会被阻塞。

我想你可能对 Klein 感兴趣,它提供了类似于 Flask 的 API,但可以在 Twisted 上开箱即用:http://klein.readthedocs.io/en/latest/

另一种选择:我会研究 nginx 作为 Flask 应用程序的反向代理,而不是 Twisted。 nginx 在单独的进程中运行,并且在 Flask 处理请求时不会被阻塞。 https://www.nginx.com/resources/admin-guide/reverse-proxy/

【讨论】:

  • 感谢我一直在使用 Klein,它真的很棒!
【解决方案2】:

您可以使用扭曲的网络,如 Flask deploy documentation 中所述。以下是我设法在我的机器上运行服务器的方法:

pip3 install twisted[tls]

export PYTHONPATH=${PYTHONPATH}:${PWD} # exports python path
twistd  web -n --port tcp:5000 --wsgi path-to-your-app-root --logfile log.txt

虽然我的服务器在针对我的特定场景启动并运行后遇到了一些问题,但这可能对你有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 2020-05-22
    相关资源
    最近更新 更多