python允许无止境的循环码_如何用python编写无止境循环爬虫程序?

正如您在评论中所说,您运行在一个公共共享服务器上,比如GoDaddy等等。因此cron不可用那里并且通常禁止长时间运行的脚本-即使您使用sleep,您的进程也会被终止。在

因此,我看到的唯一解决方案是使用一个外部服务器,您必须控制它连接到您的公共服务器并每10分钟运行一次脚本。一种解决方案可以是使用本地计算机上的cron将wget或{}连接到主机上的特定页面。**在

也许你可以找到允许定期运行脚本的在线服务,并使用这些服务,但我不知道。在

**奖励:您可以直接获得结果作为回应,而不必给自己发送电子邮件。在

更新

因此,在更新后的问题中,您建议您使用脚本通过HTTP请求调用自己。我以前也想过,但我在之前的回答中没有考虑过,因为我相信它(一般来说)不会起作用。在

我关心的是:如果请求脚本的HTTP连接在脚本终止之前关闭,服务器是否会终止该脚本?在

换句话说:如果您打开yoursite.com/script.py,运行需要60秒,并且在10秒后关闭与服务器的连接,脚本是否会一直运行到正常结束?在

我认为答案显然是“不,脚本将被杀死”,因此该方法将是无用的,因为您应该保证通过HTTP请求调用自己的脚本比被调用的脚本活得更长。我用烧瓶做了个小实验,结果证明我错了:from flask import Flask

app = Flask(__name__)

@app.route('/')

def hello_world():

import time

print('Script started...')

time.sleep(5)

print('5 seconds passed...')

time.sleep(5)

print('Script finished')

return 'Script finished'

if __name__ == '__main__':

app.run()

如果我运行这个脚本并对localhost:5000发出一个HTTP请求,并在2秒钟后关闭连接,那么脚本将继续运行,直到结束,消息仍然被打印出来。在

因此,对于flask,如果您可以对自己执行异步请求,那么您应该能够拥有一个“无限循环”脚本。在

不过,我不知道其他服务器上的行为。你应该做个测试。在

控制

假设您的服务器允许您执行GET请求并让脚本在连接关闭的情况下运行,那么您就没有什么事情需要处理了,例如,您的脚本仍然必须运行得足够快,以便在允许的最大服务器时间内完成,并且使脚本每10分钟运行一次,最多允许1分钟,每次打10个电话你都要数数。在

此外,必须控制这种机制,因为您不能按照您的请求中断它以进行调试。至少,不是直接的。在

因此,我建议您使用文件:使用一个文件将爬行分成更小的步骤,每个步骤都可以在不到一分钟内完成,然后在再次调用脚本时再次继续。在

在实际执行爬网之前,使用一个文件来计算脚本被调用的次数。例如,如果允许脚本生存90秒,但您希望每隔10小时爬网一次,则这是必需的。在

使用一个文件来控制脚本:存储一个布尔标志,如果需要,可以使用它来停止递归机制。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值