为什么我的Python 2.7脚本不能工作?

为什么我的Python 2.7脚本不能工作?,python,python-2.7,twisted,Python,Python 2.7,Twisted,我使用Python 2.7中的treq编写了此脚本,但它不发出以下请求: from twisted.internet import reactor import time,hashlib,urllib2,json,treq PasswordStart = 0 executed = [] def done(response): if response.code == 200: sys.stdout.write( Password ) reactor.stop()

我使用Python 2.7中的treq编写了此脚本,但它不发出以下请求:

from twisted.internet import reactor
import time,hashlib,urllib2,json,treq

PasswordStart = 0
executed = []

def done(response):
    if response.code == 200:
        sys.stdout.write( Password )
    reactor.stop()
while PasswordStart<10001:    
    if PasswordStart not in executed and PasswordStart<10001:
        executed.append(PasswordStart)
        UserAgent = "Samsung Galaxy S8 - 7.0.0"
        Username = "JamesRicky"
        RegD = time.strftime("%Y-%m-%d")
        Password = str(PasswordStart).zfill(4)
        HASH = hashlib.md5()
        HASH.update(time.strftime("%Y-%m-%d")+Password)
        url = "http://example.com/info"
        data = {'Password': Password, 'RegDate': RegD, 'UserName': Username}
        headers = {'Content-type': 'application/json', 'Accept-encoding': 'gzip, deflate', 'Accept': '*/*', 'Reg-Date': RegD, 'User-Agent': UserAgent, 'Secret-Key': HASH.hexdigest()}
        d = treq.post(url, data=json.dumps(data), headers=headers)
        d.addCallback(done)
        PasswordStart+=1

reactor.run()
从twisted.internet导入
导入时间、hashlib、urllib2、json、treq
PasswordStart=0
已执行=[]
def完成(响应):
如果response.code==200:
sys.stdout.write(密码)
反应堆停止()

正如我所看到的,当PasswordStart时,您在
done
函数中停止reactor。因此,一旦收到第一个响应,您的反应堆将立即停止。停止反应器将停止脚本,即使存在挂起的回调。你需要即兴发挥你的逻辑,看看是否所有的请求都完成了,然后停止反应堆


treq基于twisted。查看本文,了解有关事件循环/反应器的更多知识。您确实不希望批量处理10000个请求,然后同时将它们全部发出—这就是您的代码所做的


查看这篇旧博文,

您是否收到任何错误消息?你有没有做过什么来缩小问题的范围?你有没有看一看-上面写着“寻求调试帮助的问题”(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整且可验证的示例。“使用打印陈述。我没有收到任何错误消息,但我已经清楚地解释了它应该做什么。程序运行,但没有与请求的URL建立任何连接。@Elan我尝试在循环底部打印PasswordStart,它给出以下输出:1,这意味着它没有通过循环。