测试GAE中的并发访问

时间:2013-07-03 05:27:22

标签: google-app-engine python-2.7 app-engine-ndb

是否可以模拟对Google App Engine中的一段代码的并发访问?我正在尝试对一段增加计数器的代码进行单元测试。代码可能会被应用程序的不同实例同时使用,虽然我已经使数据存储区访问部分是事务性的并且还使用了memcache cas,但如果有某种方法可以测试它,我会感觉更好。 我已经尝试设置后台线程,但Testbed似乎正在为每个线程创建一个新环境。

1 个答案:

答案 0 :(得分:1)

如果能解决您的问题,请投票:)

GAE就是这样的:

  1. 您可以让多个程序实例具有分隔的代码空间 - 意味着实例无法访问其他实例。
  2. 如果您将代码标记为线程安全,则可以在程序实例中拥有多个线程 - 意味着每个实例都可以访问相同的代码/内存(在您的情况下为计数器) - 您需要锁定以避免冲突。
  3. Memcache已同步 - 所有程序及其线程都可以更新值 - 没有并发比赛 - 意味着您可以读取最近的缓存值并跟踪更改期间是否有更改。
  4. 如何模拟对一段代码的并发访问? - 您不应该模拟您应该在线程或程序级别使用清除锁定 - 因为很难模拟并发比赛 - 不知道谁将赢得程序或线程竞争,因为在每个环境中结果是未定义的 - 意味着Linux,Windows,蟒。