我正在编写一个需要并发和异步性的Python应用程序.我已经为Twisted和Celery提出了一些建议,但是我无法确定哪个是这个应用程序的更好选择(我没有任何经验).
应用程序(不是Web应用程序)主要围绕向各种第三方API发出SOAP调用.要处理给定的数据,我需要按顺序调用几个API.而且我希望能够为每个API提供一个"工作者"池,这样我就可以一次为每个API拨打多个电话.没有什么关于这应该是非常密集的cpu.
更具体地说,外部进程将向该应用程序的数据库添加新的"消息".我需要一份监视新消息的工作,然后将它们推送到Process.该过程将包含4-5个步骤,这些步骤需要按顺序发生,但可以完全异步发生.每个步骤都将接收消息并以某种方式对其进行操作,通常会向消息添加详细信息.每个后续步骤都需要从其前面的步骤输出.对于大多数这些步骤,所涉及的工作主要围绕通常使用SOAP客户端调用第三方API,解析响应以及更新消息.一些案例将涉及创建二进制文件(如果这是一个因素,则更难腌制).最后,一旦最后一步完成,我将需要更新数据库中的标志,以指示完成此消息的整个过程.
此外,由于每个步骤都涉及等待网络响应,因此我希望通过在每个步骤中同时发出多个请求来提高整体吞吐量.
Celery或Twisted是一个更普遍合适的框架吗?如果他们都能充分解决问题,那么使用一个与另一个是否有利有弊?还有什么我应该考虑的吗?
我将存储一些敏感的信息(SSN,银行账户等),因此它们显然需要加密.你推荐什么策略?
我应该在Web应用程序本身中进行所有加密/解密吗?我应该使用类似pgcrypto的东西并在数据库端完成转换吗?还有别的吗?
另外,如果您认为我应该在Web应用程序端进行加密,那么您会推荐哪些Python库?
如何确保仅在从DB加载字段中的数据时调用自定义字段的*to_python()*方法?
我正在尝试使用自定义字段来处理单个模型属性的Base64编码/解码.在我实例化模型的新实例并使用其明文值设置此属性之前,所有内容似乎都正常工作......此时,Django尝试解码该字段但因为它是纯文本而失败.
自定义字段实现的吸引力在于我认为我可以处理100%的编码/解码逻辑,因此我的代码中没有其他部分需要知道它.我究竟做错了什么?
(注意:这只是一个例子来说明我的问题,我不需要关于我应该或不应该使用Base64编码的建议)
def encode(value):
return base64.b64encode(value)
def decode(value):
return base64.b64decode(value)
class EncodedField(models.CharField):
__metaclass__ = models.SubfieldBase
def __init__(self, max_length, *args, **kwargs):
super(EncodedField, self).__init__(*args, **kwargs)
def get_prep_value(self, value):
return encode(value)
def to_python(self, value):
return decode(value)
class Person(models.Model):
internal_id = EncodedField(max_length=32)
Run Code Online (Sandbox Code Playgroud)
...当我在交互式shell中执行此操作时,它会中断.为什么在这里调用to_python()?
>>> from myapp.models import *
>>> Person(internal_id="foo")
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/django/db/models/base.py", line 330, in __init__
setattr(self, field.attname, val)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/fields/subclassing.py", line 98, in __set__
obj.__dict__[self.field.name] = self.field.to_python(value)
File "../myapp/models.py", line …Run Code Online (Sandbox Code Playgroud) 有没有办法以编程方式确定美国给定的实际街道地址与哪个学区相关联?
django ×2
python ×2
api ×1
celery ×1
concurrency ×1
encryption ×1
field ×1
lookup ×1
map ×1
postgresql ×1
soap ×1
twisted ×1