端点在已部署的服务器上以不同的顺序返回值

时间:2016-10-21 14:05:17

标签: python google-app-engine google-cloud-datastore google-cloud-endpoints

我有一个端点,返回的值基本上是10行字符串,在我的数据库中由此类表示:

class BoardForm(messages.Message):
    """Used to show a board state"""
    row_0 = messages.StringField(1)
    row_1 = messages.StringField(2)
    row_2 = messages.StringField(3)
    row_3 = messages.StringField(4)
    row_4 = messages.StringField(5)
    row_5 = messages.StringField(6)
    row_6 = messages.StringField(7)
    row_7 = messages.StringField(8)
    row_8 = messages.StringField(9)
    row_9 = messages.StringField(10)

在我的开发服务器上,当我使用此端点时,它会按照上面的顺序整齐地返回所有10行。但是,部署应用程序并在实时服务器上测试了端点(没有更改代码),我的行的顺序是不同的。实时端点还返回"kind""etag"的数据,这些数据不在开发服务器上,我提到它是因为它是我能看到的唯一其他差异。

我能够通过使用不同的类来创建一个显示正确顺序的变通方法:

class StringMessages(messages.Message):
    """Outbound (multiple) string message"""
    items = messages.StringField(1, repeated=True)

我只是将每一行放入此类,创建一个列表,然后返回该值(显然也会更改端点的response_message)。

但是,我真的想知道为什么订单会在部署的服务器上突然改变。它似乎不是随机的,因为重复尝试使用端点每次返回相同的顺序(类似于4,5,0,1,2,3,6,7,8,9左右)。我可以忍受我的工作,但如果有更好的方法我可以解决这个问题,我宁愿不使用它。如果我能更好地理解GAE,那也会很好。

1 个答案:

答案 0 :(得分:0)

没有看到您如何显示输出。变量没有“排序”。如何返回一个有订单的列表:

class BoardForm(messages.Message):
    """Used to show a board state"""
    row_list = [messages.StringField(i) for i in range(1,11)]