在视图之间传递数据有不同的方式.实际上,这与在两个不同的脚本之间传递数据的问题没有太大区别&当然,进程间通信的一些概念也是如此.我脑海中浮现的一些事情是-
- GET request - First request hits view1->send data to browser -> browser redirects to view2
- POST request-(如您所建议)与上述流程相同,但在涉及更多数据时适用
- Django session variables-这是最简单的实现
- Client-side cookies-可以使用,但对可以存储的数据量有限制.
- Shared memory at web server level-很棘手,但可以做到.
- 如果你可以有一个独立的服务器,那么这个服务器就可以用睡觉的API来调用视图.
- Message queues-同样,如果可以使用独立服务器,甚至消息队列也可以工作.i、 e.第一个视图(API)接收请求并将其推送到队列,其他一些进程可以弹出消息并点击第二个视图(另一个API).这将使第一视图和第二视图API解耦,并可能更好地管理负载.
- Cache-也许像memcached这样的缓存可以充当中介.但是,如果要走这条路,最好使用Django会话,因为它隐藏了大量的实现细节,但如果需要考虑规模,memcached或redis是不错的 Select .
- Persistent storage-在某些持久存储机制(如MySQL)中存储数据.这通过中间有一个DB将参与请求(可能是面向客户端的API)与处理部分解耦.
- NoSql storages-如果写入速度是每秒数十万,那么MySQL性能将成为瓶颈(通过调整MySQL配置是有办法绕过的,但这并不容易).那么考虑NoSQL DB可能是另一种 Select .例如:DynamoDB、Redis、HBase等.
- 如果您的用例是实时计算,则可以 Select 类似于Stream Processing的Storm或AWS Kinesis.事实上,您可以在中间使用AWS Lambda作为无服务器计算模块,它将读取并调用您的第二个视图API.
Write data into a file-则下一个视图可以从该文件中读取(非常难看).这可能永远都不应该做,但将此点作为不应该做的事情放在这里.
再也想不到了.如果我得到任何信息我会更新的.希望这能在某种程度上有所帮助.