微信开发总结报告
为期四个星期的微信开发项目今天终于结束了。这对于我来说是一次非常难忘的经历。我也从中学习了很多经验。
首先是迭代一当中的结对编程环节,之前对那方面进行过了一次总结,在这里可以查看。
当然,在迭代一当中,还点了一颗科技树,叫做视频剪辑。我第一次使用 iMovie,也是了解了很多相关的知识,成功的剪辑出一部片子花费了很长时间,很多精力,但是成就感十足。
迭代二主要是进行单元测试、功能测试和性能测试。
其中遇到了一些问题,在这里做一个总结。
首先是数据库加锁的问题,Django 帮我们很方便的提供了一种多线程对数据库加锁的方法,使用 transaction.atomic()
1 with transaction.atomic(): 2 activity = delay_op(*args) 3 # Time check 4 assert_logic(activity.end_time>now, "很抱歉,活动已经结束。") 5 # Check ticket existance 6 try: 7 ticket = Ticket.objects.get(activity=activity, user=self.user) 8 except ObjectDoesNotExist: 9 return self.reply_text("很抱歉,你没有这次活动的票。")
可以看到,把需要保证数据库一致性的代码放在 with transaction.atomic() 的作用域里,就可以保证操作的原子性。通过这个操作,我们的 16 个进程的工程也就没再出现过数据库错误了。
而且我们发现随着进程数的增加,抗压能力也逐渐增加,但是超过16个进程的时候会出现衰减,我们认为它和进程占用了过多的内存和切换上下文所消耗的CPU资源有关。
总之,这次项目是两人组队,我和我的队友合作感觉还是有一定的默契的,分工也比较明确,结对编程的部分配合的效率也很高。之后的项目会是四个人组队,不知道能不能把这作业中的锻炼应用起来。