Python Cherrypy仅在处理文件上载时存在端口问题?

Python Cherrypy仅在处理文件上载时存在端口问题?,python,python-3.x,python-imaging-library,cherrypy,Python,Python 3.x,Python Imaging Library,Cherrypy,我正试图让一个网站重新运行,它失去了一名开发人员和大量未记录的信息——急需帮助。该站点使用了以下配置,我觉得我没有正确启动cherrypy(cherryd?) 该站点未使用基于名称的虚拟主机,使用ip地址一切正常。我们没有使用mod_python,cherrypy也不是从apache开始的 我们正在通过.htaccess中的重写规则将一些请求路由到cherrypy RewriteRule ^ip/(.*) http://127.0.0.1:8081/$1 [proxy] 配置文件:(cpcon

我正试图让一个网站重新运行,它失去了一名开发人员和大量未记录的信息——急需帮助。该站点使用了以下配置,我觉得我没有正确启动cherrypy(cherryd?)

该站点未使用基于名称的虚拟主机,使用ip地址一切正常。我们没有使用mod_python,cherrypy也不是从apache开始的

我们正在通过.htaccess中的重写规则将一些请求路由到cherrypy

RewriteRule ^ip/(.*) http://127.0.0.1:8081/$1 [proxy]
配置文件:(cpconfig.conf)

启动cherryd的命令对我无效:

cherryd -d -i imageproc -c cpconfig.conf
Cherrypy开始出现:

ENGINE Listening for SIGHUP.
ENGINE Listening for SIGTERM.
ENGINE Listening for SIGUSR1.
ENGINE Bus STARTING
ENGINE Started monitor thread '_TimeoutMonitor'.
ENGINE Started monitor thread 'Autoreloader'.
ENGINE Serving on 127.0.0.1:8081
ENGINE Bus STARTED
我们的大多数应用程序都运行良好。该应用程序是一个设计工具,使用输入和图像上传在屏幕上呈现图像。文本输入工作正常。然而,当我们使用应用程序的文件上传部分时,文件似乎要上传(根据chrome的进度指示器),然后它只是等待,超时,最终返回502代理错误

在此等待/超时期间,我可以使用其他文本输入等,cherrypy服务器会快速响应。。它只是被图像窒息了

下面是Apache显示的内容。长编码URL表示对画布上图像的更改,所有更改都返回OK。但是文件上传失败了

[Tue Jan 22 19:56:11 2013] [debug] proxy_util.c(1513): [client 67.176.56.45] proxy: *: found reverse proxy worker for http://127.0.0.1:8081/render?w=805&h=470&z=0.2&l=%5B%7B%22t%22%3A%2233%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%5D&g=%5B%5D&b=, referer: http://97.107.141.248/design/new/1209
[Tue Jan 22 19:56:11 2013] [debug] mod_proxy.c(993): Running scheme http handler (attempt 0)
[Tue Jan 22 19:56:11 2013] [debug] mod_proxy_http.c(1940): proxy: HTTP: serving URL http://127.0.0.1:8081/render?w=805&h=470&z=0.2&l=%5B%7B%22t%22%3A%2233%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%5D&g=%5B%5D&b=
[Tue Jan 22 19:56:11 2013] [debug] proxy_util.c(1999): proxy: HTTP: has acquired connection for (*)
[Tue Jan 22 19:56:11 2013] [debug] proxy_util.c(2055): proxy: connecting http://127.0.0.1:8081/render?w=805&h=470&z=0.2&l=%5B%7B%22t%22%3A%2233%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%5D&g=%5B%5D&b= to 127.0.0.1:8081
[Tue Jan 22 19:56:11 2013] [debug] proxy_util.c(2153): proxy: connected /render?w=805&h=470&z=0.2&l=%5B%7B%22t%22%3A%2233%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%2C%7B%22t%22%3A%22%22%2C%22b%22%3Afalse%2C%22i%22%3Afalse%2C%22u%22%3Afalse%2C%22a%22%3A%22c%22%2C%22fs%22%3A11%2C%22f%22%3A0%2C%22x%22%3A0%2C%22y%22%3A0%2C%22arc%22%3Afalse%2C%22o%22%3A0%2C%22r%22%3A0%2C%22cw%22%3Atrue%7D%5D&g=%5B%5D&b= to 127.0.0.1:8081
[Tue Jan 22 19:56:11 2013] [debug] proxy_util.c(2308): proxy: HTTP: fam 2 socket created to connect to *
[Tue Jan 22 19:56:11 2013] [debug] proxy_util.c(2414): proxy: HTTP: connection complete to 127.0.0.1:8081 (127.0.0.1)
[Tue Jan 22 19:56:11 2013] [debug] mod_proxy_http.c(1723): proxy: start body send
[Tue Jan 22 19:56:11 2013] [debug] mod_proxy_http.c(1816): proxy: end body send
[Tue Jan 22 19:56:11 2013] [debug] proxy_util.c(2017): proxy: HTTP: has released connection for (*)
[Tue Jan 22 19:56:21 2013] [debug] proxy_util.c(1513): [client 67.176.56.45] proxy: *: found reverse proxy worker for http://127.0.0.1:8081/upload, referer: http://97.107.141.248/design/new/1209
[Tue Jan 22 19:56:21 2013] [debug] mod_proxy.c(993): Running scheme http handler (attempt 0)
[Tue Jan 22 19:56:21 2013] [debug] mod_proxy_http.c(1940): proxy: HTTP: serving URL http://127.0.0.1:8081/upload
[Tue Jan 22 19:56:21 2013] [debug] proxy_util.c(1999): proxy: HTTP: has acquired connection for (*)
[Tue Jan 22 19:56:21 2013] [debug] proxy_util.c(2055): proxy: connecting http://127.0.0.1:8081/upload to 127.0.0.1:8081
[Tue Jan 22 19:56:21 2013] [debug] proxy_util.c(2153): proxy: connected /upload to 127.0.0.1:8081
[Tue Jan 22 19:56:21 2013] [debug] proxy_util.c(2308): proxy: HTTP: fam 2 socket created to connect to *
[Tue Jan 22 19:56:21 2013] [debug] proxy_util.c(2414): proxy: HTTP: connection complete to 127.0.0.1:8081 (127.0.0.1)
[Tue Jan 22 20:01:22 2013] [error] [client 67.176.56.45] (70007)The timeout specified has expired: proxy: error reading status line from remote server 127.0.0.1, referer: http://97.107.141.248/design/new/1209
[Tue Jan 22 20:01:22 2013] [debug] mod_proxy_http.c(1401): [client 67.176.56.45] proxy: read timeout, referer: http://97.107.141.248/design/new/1209
[Tue Jan 22 20:01:22 2013] [error] [client 67.176.56.45] proxy: Error reading from remote server returned by /ip/upload, referer: http://97.107.141.248/design/new/1209
[Tue Jan 22 20:01:22 2013] [debug] proxy_util.c(2017): proxy: HTTP: has released connection for (*)
如果有更好的方式来交流日志,请让我知道什么是首选

不管怎样,在8081上听不到别的

这是否表明应用程序本身存在某种与图像上传有关的错误?我已经尝试过将应用程序代码恢复到一个时间点,在这个时间点上所有的东西都能正常工作,按照上面的方法杀死并重新启动cherrypy(cherryd),但它仍然不起作用

新信息: 像这样运行我的应用程序: PythonImageProc.py

这样做的诀窍,因为有一个快速启动调用在我的应用程序。没有端口问题,图像将上传,一切正常。当然,关闭术语窗口会扼杀这个过程。所以我仍然在寻找让cherrypy离开地面的正确方法


就像我说的,我渴望得到任何指点。。非常感谢,您的图像大小可能大于CherryPy设置的默认允许请求实体大小(即100Mb IIRC)

当请求实体大于treshold时,CherryPy中止请求并以413错误代码响应

尝试在全局配置中设置以下值:

[global]
server.max_request_body_size = 20971520000
这会将其设置为200Mb

编辑:以下是将CherryPy进程转变为守护进程的方法:

import cherrypy

class Root(object):
    @cherrypy.expose
    def index(self):
        return "hello world"

if __name__ == '__main__':
    cherrypy.config.update({'server.socket_port': 8081,
                            'server.socket_host': '0.0.0.0'})

    from cherrypy.process.plugins import Daemonizer
    cherrypy.config.update({'log.screen': False})
    Daemonizer(cherrypy.engine).subscribe()

    cherrypy.quickstart(Root())

我回答这个问题是因为我剩下的问题与原来的问题无关

我的应用程序调用了cherrypy.quickstart,因此我只需要用以下内容启动我的应用程序:

python appname.py&
因此,使用cherryd是错误的方法,并导致上述奇怪的端口/代理相关错误

作为一名新手,我花了一段时间才明白,在命令末尾添加“&”将在后台运行我的应用程序,这样我就可以关闭终端窗口

这种结合让我回到了事情发生之前我们在这个项目上的状态


我剩下的问题是关于使用cron保持cherrypy服务的正常运行,但这是一个单独的问题,我将进一步研究。

谢谢Sylvain。我有一些新的信息,这让我相信它不是文件大小。我的应用程序末尾有一个快速启动调用,因此我现在认为启动cherrypy的正确方法是使用python调用应用程序,例如python imageproc.py,它启动服务器,当我这样做时。。我可以上传图片到我的设计工具。但是,关闭“终端”窗口会终止进程。所以我相信我正在寻找通过imageproc启动cherrypy作为守护进程的方法?再次感谢您的回复我认为您上面添加的(daemonizer)是比
python imageproc.py&
更好的解决方案,但是您能告诉我为什么吗?重新启动后,我仍然需要运行daemonizer脚本?我假设我需要将配置文件添加到quickstart,这是否意味着我需要从我的应用程序中删除quickstart调用?这是否意味着我不再需要执行我的应用程序imageproc.py?抱歉,我是Python/Cherrypy的初学者。daemonizer插件只会以与“&”标志类似的方式将运行Cherrypy的Python进程与其父进程(您的控制台进程)分离。这只是一种编程方式。在重新启动后,确实需要重新启动进程,因为它不是系统的服务。您还可以查看处理该过程的解决方案。是的,你总是需要快速启动调用来启动CherryPy(除非你通过cherryd来启动它)。
python appname.py&