python - IIS 托管 python CherryPy API
问题描述
我正在寻找链接 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 之外,如何创建相同的东西。
有没有人有任何有用的指示或链接供我遵循?
解决方案
要在 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 Collection Editor:
8.设置PYTHONPATH变量(你的cherrypy应用文件夹路径):
9.还有 WSGI_HANDLER(我的应用程序名为 app.py,因此值为 app.wsgiapp - 如果您的应用程序名为 site.py,则为 site.app.wsgiapp 或类似名称):
配置更改后,您可能必须重新启动服务器和网站。
确保您使用管理员用户之一运行应用程序池标识,或者如果它使用应用程序池标识运行,则确保您提供对站点文件夹 C:\cherryapp 和 python 文件夹 C:\Python37-32 或分配 iis_iusrs 和 iusr 权限。
应用程序.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)
推荐阅读
- angular - 从 ID 数组中检索数据 firebase (Angular)
- c++ - 计算光线和网格之间的交点
- java - 线程“主”java.lang.AbstractMethodError 中的异常:接收器类 org.openqa.selenium.chrome.ChromeOptions 未使用 Selenium 定义错误
- java - 将 H2 数据库与 Spring Boot 集成
- ssl - HTTPS 客户端身份验证自签名证书
- database - 在一对多关系中具有和不具有外键作为主键的一部分之间的区别
- python - 将具有动态范围的嵌套循环转换为列表推导
- javascript - 如何将 2 个或多个 JavaScript 与相同的功能结合起来
- azure - 在 databricks 笔记本中找不到导入库
- c++ - 具有分段错误的链表哈希表