首页 > 代码库 > 微信项目个人总结

微信项目个人总结

微信开发总结报告

为期四个星期的微信开发项目今天终于结束了。这对于我来说是一次非常难忘的经历。我也从中学习了很多经验。

首先是迭代一当中的结对编程环节,之前对那方面进行过了一次总结,在这里可以查看。

当然,在迭代一当中,还点了一颗科技树,叫做视频剪辑。我第一次使用 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资源有关。

总之,这次项目是两人组队,我和我的队友合作感觉还是有一定的默契的,分工也比较明确,结对编程的部分配合的效率也很高。之后的项目会是四个人组队,不知道能不能把这作业中的锻炼应用起来。

 

微信项目个人总结