我有一个巨大的django项目,必须使用Instagram API及其订阅模式才能工作。对于订阅,我的服务器必须非常敏感,并准备异步工作以设置挂钩,以便在用户发布后接收通知。或者这就是文档建议的内容。现在在那里使用龙卷风会是一件好事吗?只是为了那个小部分,或者我可以用有效的方式使用Django吗?如果是这样,怎么样?
答案 0 :(得分:9)
您可以在Tornado之上使用WSGI容器来托管任何WSGI应用程序,包括Django,但是,当您这样做时,WSGI应用程序仍然作为阻塞应用程序运行,并且不会神奇地作为异步应用程序运行。因此,当Django处理请求时,无法在Django中同时处理另一个请求。此时的解决方案与运行单线程WSGI服务器没有太大区别,您需要有多个Tornado实例来处理并发请求。
所以所有这些都取决于异步的含义。你当然不能在Django中使用Tornado的直接异步编程API。因此,通过WSGI接口将Dorno与Tornado一起使用并没有什么大的好处。
答案 1 :(得分:2)
据我了解,您正在Instagram docs
中讨论这一段您应该构建系统以接受每个有效负载的多个更新对象 - 尽管通常只包含一个。此外,您应该在2秒超时内确认POST - 如果您需要对接收到的信息进行更多处理,则可以在异步任务中执行此操作。
这是Tornado提供的另一种“异步”。 我认为Django + Celery会更好地适应这种情况。
您的申请将以这种方式运作:
instagram_process.delay(request.raw_post_data)
或instagram_process.delay(request.body)
instagram_process
任务中,您可以完成所有游行 - 解析JSON,存储数据库以及您需要的任何其他任务。如果要检查X-Hub-Signature
,您可以在步骤1和步骤2之间执行此操作,或将此标题传递给任务并在步骤4验证签名。
答案 2 :(得分:1)
您可以使用tornado.wsgi将Tornado与其他符合WSGI的框架集成。有关详细信息,请查看此演示项目: