【问题标题】:IIS to host python CherryPy APIIIS 托管 python CherryPy API
【发布时间】:2020-03-11 03:25:39
【问题描述】:

我正在寻找链接 IIS 和 Cherrypy 的解决方案。

我想为 Cherrypy 做一个具体的解释,因为所有其他应用程序都适用于烧瓶和 django 等其他应用程序。

我可以调用函数getHeight和getWidth

使用电话http://0.0.0.0:8080/getHeight

import cherrypy
import tileProvider
import time


class MyWebService(object):
    provider = TileProvider('myPicture.JPEG')
    @cherrypy.expose
    def getHeight(self):
        return str(MyWebService.provider.getHeight())

    @cherrypy.expose
    def getWidth(self):
        return str(MyWebService.provider.getWidth())


if __name__ == '__main__':
    IPv4 = socket.gethostbyname(socket.gethostname())
    config = {'server.socket_host': IPv4,
              'server.socket_port': 8080}
    cherrypy.config.update(config)
    cherrypy.quickstart(MyWebService())

那么现在除了从 IIS 托管而不是 CherryPy 内置的 WebServer 之外,如何创建相同的东西。

是否有人有任何有用的指示或链接可供我参考?

【问题讨论】:

标签: python iis wsgi cherrypy pywin32


【解决方案1】:

要在 iis 中配置 Cherrypy 应用程序,您可以按照以下步骤操作:

1.运行以下命令安装cherrypy

pip install cherrypy

2.安装wfastcgi并启用它:

pip install wfastcgi

fastcgi-enable

3.启用iis cgi功能。

4. 在 iis 中添加站点,使用您的 Cherrypy 应用路径

5.选择您的站点名称,然后在中间窗格中双击 iis 的处理程序映射功能。

6.在处理程序映射中从操作窗格中选择添加模块映射。

可执行路径值: C:\Python37-32\python.exe|C:\Python37-32\Lib\site-packages\wfastcgi.py

C:\Python37-32 是你的 Python 路径。

7.现在返回并再次选择服务器名称并从中间窗格中选择快速 CGI 设置。 双击它,然后单击 Environment Variables 集合的“...”以启动 EnvironmentVariables 集合编辑器:

8.设置PYTHONPATH变量(你的cherrypy应用文件夹路径):

9. 以及 WSGI_HANDLER(我的应用名为 app.py,因此值为 app.wsgiapp - 如果您的应用名为 site.py,则为 site.app.wsgiapp 或类似名称):

您可能需要在配置更改后重新启动服务器和网站。

确保您使用管理员用户之一运行应用程序池标识,或者如果它使用应用程序池标识运行,则确保您提供对站点文件夹 C:\cherryapp 和 python 文件夹 C:\Python37 的完全权限-32 或分配 iis_iusrs 和 iusr 权限。

app.py:

import cherrypy



class Root:

    @cherrypy.expose

    def index(self):

        return 'Hello CherryPy!'



    @cherrypy.expose

    def greet(self, name):

        return 'Greetings, {0}'.format(name)



url_prefix = '/cherrypy'



cherrypy.config.update({'engine.autoreload.on': False})

cherrypy.server.unsubscribe()

cherrypy.engine.start()



wsgiapp = cherrypy.tree.mount(Root(), url_prefix)

【讨论】:

  • 我很感激。我正在使用python 64位。我必须使用 32 位版本才能工作吗?
  • @CameronSorensen 在我看来无需更改为 32 位。您使用的是哪个 python 版本,请确保它在 3.6 之后,因为 iis 不支持低于此版本?我还用 64 位 python 进行了测试,你可以看到 here
  • 如果您觉得我的回答对您有帮助,请将其标记为答案。这将帮助面临同样问题的其他人。
  • 我使用的是 python 3.7.2。我无法让它工作,过去三个小时我一直按照你的步骤操作。每次使用 localhost:8063/cherrypy 时都会收到“错误 404”
  • 致任何尝试这样做的人确保在 iis 中启用目录浏览。在 web.config 中将 resourceType'"File" 替换为 resourceType="Unspecified" requireAccess="Script"
猜你喜欢
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 2019-05-30
  • 1970-01-01
  • 1970-01-01
  • 2021-01-29
  • 2019-03-18
  • 1970-01-01
相关资源
最近更新 更多