Python 如何检查代理后是否存在远程文件

Python 如何检查代理后是否存在远程文件,python,proxy,mechanize,file-exists,Python,Proxy,Mechanize,File Exists,我正在编写连接到web服务器的应用程序(我是服务器的所有者)发送用户提供的信息,处理该信息并将结果发送回应用程序。处理结果所需的时间取决于用户请求(从几秒钟到几分钟) 我使用无限循环检查文件是否存在(可能有更智能的方法…可能我可以估计请求可能需要的最长时间,并避免使用无限循环) 代码的重要部分如下所示 import time import mechanize br = mechanize.Browser() br.set_handle_refresh(False) proxy_values={

我正在编写连接到web服务器的应用程序(我是服务器的所有者)发送用户提供的信息,处理该信息并将结果发送回应用程序。处理结果所需的时间取决于用户请求(从几秒钟到几分钟)

我使用无限循环检查文件是否存在(可能有更智能的方法…可能我可以估计请求可能需要的最长时间,并避免使用无限循环)

代码的重要部分如下所示

import time
import mechanize

br = mechanize.Browser()
br.set_handle_refresh(False)
proxy_values={'http':'proxy:1234'}
br.set_proxies(proxy_values)


While True:
    try:
        result=br.open('http://www.example.com/sample.txt').read()
        break
    except:
        pass
time.sleep(10)
在代理之后,循环永远不会结束,但如果我更改类似的代码

time.sleep(200)
result=br.open('http://www.example.com/sample.txt').read()
i、 e.在尝试读取之前,我等待足够的时间来确保文件已创建,我确实获得了文件:-)

似乎如果mechanize每次都请求一个不存在的文件,mechanize会再次请求,我不会得到任何文件

我使用Firefox复制了相同的行为。我请求一个不存在的文件,然后创建该文件(请记住我是服务器的所有者…),我无法获取该文件。 使用mechanize和Firefox我可以删除文件

我认为问题与代理缓存有关,我认为我无法删除该缓存,但可能有某种方法告诉代理我需要重新检查文件是否存在


还有其他解决这个问题的建议吗

最简单的解决方案是添加一个(未使用的)GET参数,以避免缓存请求

即:

web应用程序应忽略额外的参数


HTTP头可能是正确的方法,请参阅。

谢谢,您的解决方案非常有效:-)我也会阅读您的链接。唯一的问题是我不明白你的解决方案为什么有效。我不明白为什么要分配“request=0”(我删除了这一行,代码仍然有效),我也不知道“.r=%d”参数的作用(似乎是让代理相信程序请求了不同的文件,但实际上没有向服务器请求不同的文件)@aloctavodia:我指的是相同的变量,但写的名称不同。现在修好了。
i = 0
While True:
    try:
        result=br.open('http://www.example.com/sample.txt?r=%d' % i).read()
        break
    except:
        i += 1
    time.sleep(10)