【问题标题】:Why Is Not My Python 2.7 Script Working?为什么我的 Python 2.7 脚本不工作?
【发布时间】:2017-09-14 12:12:06
【问题描述】:

我有这个脚本在 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()

为什么它不起作用?

我的代码应该做的是运行这个发布请求,每个请求都应该有一个 4 位密码 (0000...9999)。每次循环运行时:

如果 PasswordStart 未执行且 PasswordStart

它应该在执行的数组中添加循环号(PasswordStart),因此它不会重复运行相同的数字两次。然后它将生成变量,然后进行连接。它保存响应并在最后检查响应。如果 response.code == 200,那么它将打印出密码。否则,它将继续循环并添加 i+1 和 PasswordStart+1。

为什么这不起作用?

【问题讨论】:

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

标签: python python-2.7 twisted


【解决方案1】:

如我所见,您正在 done 函数中停止反应器。因此,一旦收到第一个响应,您的反应器就会停止。即使有待处理的回调,停止反应器也会停止您的脚本。您需要即兴发挥您的逻辑,看看是否所有请求都已完成,然后停止反应器。

treq 基于twisted。查看documentation 了解更多关于事件循环/反应器的知识

【讨论】:

    【解决方案2】:

    您真的不想批量处理 10000 个请求,然后同时将它们全部触发 - 这就是您的代码正在做的事情。

    查看这篇旧博文,http://as.ynchrono.us/2006/05/limiting-parallelism_22.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      • 2021-06-09
      • 2016-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      相关资源
      最近更新 更多