使用 Pylons 作为 Web 后端
我使用 Pylons 有两件事:
1) 服务 API 请求(返回描述我的 SQLAlchemy 模型的 JSON)
2)运行一个脚本,24/7从互联网获取航班信息(使用HTTP)并将其推送到我的数据库(再次使用我的模型)。
我没有使用 Pylons 作为前端,而是作为后端。
我的脚本发出 HTTP 请求的最佳方式是什么? urllib / urllib2 是我最好的选择吗?
我如何不断运行我的脚本而不是基于请求服务? Celery / Cronjobs 是我在这里寻找的吗?
谢谢!
I am using Pylons for two things:
1) Serving API requests (returning JSONs describing my SQLAlchemy models)
2) Running a script 24/7 that fetches flight information from the internet (using HTTP) and pushes it into my DB (again using my models).
I am NOT using Pylons as a front end, but as a back end.
What would be the best way for my script to make HTTP request? is urllib / urllib2 my best option here?
How would I run my script constantly and not on a request serving basis? Is Celery / Cronjobs what I am looking for here?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
关于你的第一个问题:是的,urllib/urllib2 可能是最好的选择。它具有非常可靠的功能,可以向其他人发出 HTTP 请求。
关于你的第二个问题:使用你的数据库。它不是超级可扩展的,但是很容易实现一个系统,在数据库中有一个标志,本质上是应用程序的开关。一旦存在,创建一个页面(使用您认为谨慎的任何安全预防措施)来设置标志并在循环中启动应用程序,只要设置了标志,该循环就会无限期地继续。如果您需要停止 HTTP 请求而不终止整个服务器进程,则第二个页面会清除该标志。它们也可以是 shell 脚本或简短的独立脚本,而不是“页面”。重要的是,您可以在不需要 Celery 或 cron 的情况下实现此功能(尽管如果您已经熟悉其中任何一个,则可以使用 at)。
Regarding your first question: yes, urllib/urllib2 is probably the best bet. It has very solid functionality for making HTTP requests to someone else.
Regarding your second question: Use your database. It's not super-scalable, but it's easy to implement a system where you have a flag in the database that is, essentially, an on-off switch for the application. Once that exists, make a page (with whatever security precautions you think prudent) that sets the flag and starts the application on a loop that continues indefinitely as long as the flag is set. A second page clears the flag, should you need to stop the HTTP requests without killing the entire server process. Instead of 'pages,' they could also be shell scripts or short standalone scripts. The important part is that you can implement this without requiring Celery or cron (although if you're already familiar with either, have at).