假设我想开发一个web应用程序,该应用程序将拥有注册用户,并将注册为twitter应用程序(允许用户赋予其查看他们的时间轴和代表他们发布的权限)。该应用程序的唯一功能将是根据用户的设置和愿望转发用户时间轴上的推文。我了解这个应用程序的网站将在客户端使用HTML, CSS和JS等常见技术。服务器端(用户定义应用程序应该转发什么样的推文)将不得不用PHP/Python/Perl/…
MySQL/Postgre/…我不明白的是,真正的"业务逻辑"将在哪里编码?例如,我应该使用什么技术来编码服务器上的功能:每5分钟联系一次Twitter服务器,读取我拥有的每个用户的时间轴,检查是否有值得转发的推文(根据用户定义),并向Tweeter发送必要的命令来代表我的用户转发所选择的推文。
所有这些都将在用户离线时发生,并且将是一个持续的循环过程-但是我应该使用什么技术来编码它?
谢谢!
我听说过这个PHP API。不过,它实际上是我所听说过的唯一一个用于PHP的。我知道有一些很好的Python库,但是我不知道Perl。
我实际上正在为c#开发一个新的API(不适合你,因为你显然没有使用Windows服务器),并在开发一个企业web应用程序时开始构建它,该应用程序提示了几个类似于你自己的问题。
你要做的是:
- 在您开始之前,您将不得不与Twitter的一个数据合作伙伴取得联系(我相信您可以联系Twitter作为参考)
- 这样做的原因是你将需要比你想象的更多的请求
- Twitter记录速率上限的时间间隔为900秒(5分钟)
- 使用一般速率限制,如果您在每个速率限制中只查询一次用户的时间轴,那么您将每次限制您网站上的访问者数量为300
- 这就是它变得棘手的地方-如果每个用户都发出一条Tweet(意味着你发送Tweet -不是速率限制-然后刷新时间轴-速率限制-以便他们可以看到更新的Tweet)你现在已经在任何给定时间降低了你的最大活跃用户数量到150
- 考虑公司自己的时间轴(-1访问者),加上离开浏览器的访问者数量(现在你需要更多的逻辑,你必须要么踢掉他们,要么简单地跟踪你不会刷新的时间轴),发布多个tweet的用户数量(每条tweet -1访问者),等等。
- 故事的寓意:联系他们的数据合作伙伴之一,让自己获得无限的请求,或者至少有足够的数量来容纳你的访客/用户(加上一点填充)
- 如果你坚持这个建议,跳过步骤2和3,否则,跳过步骤4
- (注意:步骤2和3只适用于速率限制的实现)使用你想要的语言,创建一个在服务器上运行的服务,并对Twitter进行查询
- 根据你提供的信息,我建议你使用Python来创建这个服务
- 服务将在任何时候运行,并以它自己的时钟为基础,以 请求之间的5分钟间隔为基础
- 您必须使用缓存或数据库系统来存储数据
- (注意:步骤2和3仅适用于速率限制的实现)添加必要的代码,向为数据创建的服务发出请求,并每5分钟执行一次这些请求
- 我建议用于向服务发出这些请求的时钟比用于服务的时钟慢一点,以考虑数据传输缓慢的实例,等等。
- 你还必须在服务上调用一些方法来从队列中添加/删除用户
- (注意:步骤4仅适用于无限请求实现)忘记服务,只需将请求代码直接包含在用户所在的页面中。
- 用户的时间轴将根据他们访问网站的时间轴或他们的时间轴上次刷新的时间轴(如果发布了Tweet)进行更新 这个实现的唯一警告是,你将不得不支付无限/更大的数据速率限制