我需要轮询一个网络服务,在这个例子中是twitter的API,我想知道这个主题的传统智慧是什么。我不确定这是否重要,但我总是发现过去有用的反馈。
我想出了几个场景:
查询过程每X秒启动一次,例如cron作业运行python脚本
一个过程在每次迭代时不断循环和查询,例如......好吧,这里是我进入不熟悉领域的地方。我只是运行一个没有结束的python脚本吗?
感谢您的建议。
ps - 关于twitter的详细信息:我知道它会发送关于跟踪和直接消息的电子邮件,但有时可能需要解析@replies的灵活性。在这些情况下,我相信民意调查一如既往。
pps - twitter将机器人限制为每60分钟100次请求。我不知道这是否也限制了网页抓取或RSS阅读量。任何人都知道被列入白名单是多么容易或多难?
再次感谢。
答案 0 :(得分:5)
“我只是运行一个不会结束的python脚本吗?”
这个陌生的领域怎么样?
import time
polling_interval = 36.0 # (100 requests in 3600 seconds)
running= True
while running:
start= time.clock()
poll_twitter()
anything_else_that_seems_important()
work_duration = time.clock() - start
time.sleep( polling_interval - work_duration )
这只是一个循环。
答案 1 :(得分:0)
您应该有一个类似Ping或Heartbeat页面的页面。您有另一个“发痒”或点击该页面的过程,通常您可以在Web主机的控制面板中执行此操作,或者如果您具有本地访问权限则使用cron。然后,此脚本可以统计它在数据库或某个数据存储中轮询的频率,然后根据实际需要经常轮询服务,当然将其限制为提供者限制的任何内容。你绝对不希望(当然也不想依赖)一个“不会结束”的python脚本。 :)