小编Lui*_*ron的帖子

为什么我要使用证书对客户端进行身份验证?

我正在实现一个python's twisted的客户端,在连接时检查服务器ssl证书,基本上遵循这个配方.我在许多HOWTO中看到过,例如服务器通过ssl证书检查客户端的真实性.目前,我使用唯一的id和1024 char字符串验证我的客户端(它们是没有人工交互的自动客户端).

我不明白的是,为什么我必须使用整个ssl而不是仅仅将"密码"发送到服务器.在所有连接已经ssl加密后,检查服务器证书和所有内容.是一个类似的问题,但我想知道为什么人们使用ssl客户端证书,而不仅仅是最好的方法.

authentication ssl client-server certificate

15
推荐指数
1
解决办法
6600
查看次数

在同一个python进程上运行多个站点

在我们公司,我们为相当多的本地报纸制作新闻门户网站(目前有13个,下个月将有30个,将来会有更多),每个页面每天有2到10万页的浏览量.由于我们正在从每个站点大量定制的情况发展到每个站点的配置或自定义模板的问题,我们的软件对于所有站点已经几乎相同.现在我们的部署策略是在16核服务器和12GB RAM上为每个站点(每个站点有1-17个工作站,具体取决于站点流量)的一个gunicorn实例.这种设置的问题是每个工作人员(常规预分叉炮弹)需要110MB,无论是否使用.现在有了新的站点,我们需要添加更多的RAM来提供更多的请求,所以基本上它不会扩展.此外,由于我们正在从每个站点独立的这个模型转移,每个站点都有自己的数据库,我非常喜欢它,特别是因为我们使用关系数据库(mysql,但迁移到pgsql),所以它更容易这样碎片.

我正在做一些研究和试验在一个gunicorn实例上运行所有站点,所以我可以完全使用服务器并在负载均衡器后面添加更多服务器.问题是django假设在很多地方每个进程只运行一个站点,所以对于我到目前为止我想到的,我必须实现:

  • 从请求中获取HTTP_HOST并在threadlocal变量上放置标识符的中间件.
  • 一个模板加载器,它使用该变量相应地加载自定义模板.
  • 猴子补丁django.db.model.Model,可能添加了一个元类(甚至不确定是否可能,但我认为我需要它,因为我们有时需要使用的自定义管理器)会覆盖管理员以便首先调用原始管理器上的db_manager(标识符)然后调用预期的方法.我还需要覆盖save和delete方法以始终包含using = identifier参数.
  • 我想我需要停止使用inclus_tag装饰器,这不是一个大问题,但我需要考虑像这样的其他情况.
  • 如果我需要每个站点的自定义或额外URL,那么对于urlresolvers进行繁重而难看的修补.我现在不需要它们,但可能会在某些时候.

这就是我想出来的,甚至没有实现它并看到它破坏的地方,我确信我需要更多的更改才能工作.所以我真的不想这样做,特别是我需要额外的维护工作,但我没有看到任何替代方案,并且很想知道有人已经以更好的方式解决了这个问题.当然我也可以完全停止使用django(我已经有很多理由这样做了)但这意味着重大改写并且有两个维护软件的两个不兼容的分支,直到新的一个与django版本达到功能奇偶校验,所以到我似乎比所有丑陋的黑客更糟糕.

django gunicorn

14
推荐指数
1
解决办法
887
查看次数

我应该使用实际或样本数据进行单元测试吗?

我正在为遗留应用程序的输出编写一个解析器,由于没有关于文件语法的规范,我尽可能多地获取这些文件的样本.

现在我在实现解析器之前编写单元测试(因为没有其他理智的方法来执行此操作)但我不确定是否应该:

  • 使用应用程序生成的真实文件,从中读取并将输出与我将以json格式存储在另一个文件中的输出进行比较.
  • 或创建一个带有标记的示例字符串和我想测试的可能性以及带有预期输出的dict(这是python).

我倾向于使用第二种选择,因为我只测试我需要的东西,没有实际文件中包含的所有"真实世界"数据,但我担心我可能忘记测试一种或另一种可能性.

你怎么看?

unit-testing

6
推荐指数
1
解决办法
2150
查看次数

如何获取实现接口的类的列表?(zope.接口)

这个问题说明了一切。或者我试图用于zope.interface错误的目的?

我需要的基本上是注册实现特定功能的类(CMS 的小部件或 Portlet)的一种方法。基本上就像 django 对其 ModelAdmin 类所做的那样,但不是自动的,也不是魔法。

python zope interface zope.interface

5
推荐指数
1
解决办法
2212
查看次数

简单协议(如twisted.pb)与消息传递(AMQP/JMS)与Web服务(REST/SOAP)

我目前在python上使用twisted的透视代理,我在过去曾考虑过切换到类似RabbitMQ的东西,但我不确定它是否可以取代pb - 我觉得我可能会在这里将苹果与橙子进行比较.我最近一直在阅读很多关于REST的内容以及与SOAP的不可避免的争论,这使我开始阅读像SOA这样的"企业级"Web服务.

我有一个项目,我需要在Web和桌面上实现一些类似erp的功能,所以我正在考虑使用哪种方法/技术在服务器和客户端之间进行通信.但我也试图尽可能多地学习所有这些,所以我不想只是解决这个特殊的问题.

您在服务器和客户端之间进行通信时使用了什么?

我理解像透视代理这样的特定于python的协议可以限制我的互操作性,但我是否正确地假设某些AMQP协议可以取代它?

如果我没弄错的话,twisted.pb和amqp都使用永远在线的连接和非常低的开销协议.但一方面,保持大量客户端始终连接可能是一个问题,另一方面,即使使用http keep-alive和他们使用的任何技巧,序列化部分仍然是Web服务的问题.

如果我在任何假设中出错,如果有人能指出我正确的方向来了解更多,我将不胜感激.

python web-services twisted network-protocols amqp

4
推荐指数
1
解决办法
2136
查看次数