小编oro*_*aki的帖子

一旦它们对我们的数据库变得太慢,我怎样才能创建按需报告?

我们的应用/数据

我们有一个Python应用程序UserS IN TransactionS作CommissionS,FeeS,等,具有Contact接收小号EmailMessageS,和Activitys充分的(地方Document小号上传,Status修改等).

我们的报告

我们为客户生成电子表格报告,详细说明上传到交易的文档数量,各种佣金类型,收费,活动等.这些报告在某些情况下提供客户帐户的统计信息,给定年份中的每个月(电子表格中每个月都在其自己的行中).

我们的问题

我们已经通过我们的网络应用程序达到了一个目的,我们生成的某些电子表格报告需要花费几分钟才能生成(所有等待Postgres),尽管我们努力优化查询,添加索引,尽管我们只使用SSD并且有足够的RAM来使数据库适合内存.从本质上讲,我们已经达到了一个规模,在这个规模中,一些基本报告变得过于昂贵而无法对我们的生产数据库进

我正在考虑的解决方案

  1. 将统计信息非规范化为Postgres中的现有表
  2. Memcached中的缓存统计信息
  3. 通过将一些运算转移到Python来减少/简化查询
  4. 在队列中运行昂贵的报告,并在管理员准备好后通知他们
  5. 将统计信息存储在单独的报告表中(星型模式等)
  6. 拆分

我已经在一定程度上使用上面的选项1-4,但我想探索更多选项.另外,如果可能的话,我想完全停止使用选项4,而且我不太热衷于实现选项5(仅仅使用像Redshift这样的东西).在某些情况下,选项6是一个很好的选择,但这不是我们现在准备采取的措施.

我应该在哪里看?

我开始真正开始研究Redshift,但今天早上让我感到厌倦的是阅读(这里) " 它不是一个实时分析引擎. "这是否也意味着" 它对于在一个单一内生成报告没有用网页请求 ",或者这个博客更有可能说它对实时应用程序(在线游戏等)没用?

我也看过Quicksight,但它似乎更适合为我们自己构建业务仪表板,而不是为我们的用户生成报告.

鉴于上述信息,您将如何解决这个问题?Redshift是一个明显的答案,我上面关于实时不利的担忧是没有意义的吗?在这样的情况下,是否有其他服务或工具或方法对您更有意义?

python optimization reporting star-schema amazon-redshift

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

如何在浏览器控制台中查看 CORS 飞行前 OPTIONS 请求?

我正在寻找一种在发出 CORS 请求时查看 CORS 飞行前选项请求的方法。我想查看服务器的响应标头以帮助我调试遇到的 CORS 问题,但我无法在 Chrome 或 Firefox 的“网络”选项卡或控制台中找到执行此操作的方法。

我还安装了HTTP Header Live插件,但没有帮助。

我用来jQuery.get(url);触发我的 CORS 请求,其中url是不同域的 URL。

firefox google-chrome http-headers cors

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

Python:如何禁止从模块导入类?

我试过了:

__all__ = ['SpamPublicClass']
Run Code Online (Sandbox Code Playgroud)

但是,当然这只是为了:

from spammodule import *
Run Code Online (Sandbox Code Playgroud)

有没有办法阻止导入类.我担心我的代码的API级别会出现混淆,有人会写:

from spammodule import SimilarSpamClass
Run Code Online (Sandbox Code Playgroud)

它会导致调试混乱.

python import python-module python-import

5
推荐指数
3
解决办法
2325
查看次数

Python(或通用编程).为什么使用<>代替!=并且存在风险吗?

我认为,如果我理解正确,a <> b在功能上是完全相同的a != b,并且在Python中not a == b,但有理由使用<>其他版本吗?我知道Python新手的一个常见错误就是认为它not a is ba != bor 相同not a == b.

  1. 是否会发生类似的误解<>,或者在功能上是否完全相同?
  2. 它在内存,处理器等方面的成本是否更高

python operators

5
推荐指数
2
解决办法
470
查看次数

设计文档与UML或两者兼而有之?

我已经很难坐在UML面前并从中获取价值,因为它几乎和编程一样多(如果你使用富有表现力的语言).我发现写自然语言告诉我更多关于软件项目而不是创建复杂的图表.我是UML的新手,我对其他熟悉UML的人表示不满:

  1. UML是否值得学习/做所有时间,即使对于中小型项目也是如此?
  2. 可以很好地详细说明设计文档,虽然更高级别,但足以使程序员保持目标,即使在团队中也可以创建正确的代码?

uml design-documents

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

Django - 如何在公共页面上执行 CSFR?或者,更好的是,应该如何使用它?

读完后: http: //docs.djangoproject.com/en/dev/ref/contrib/csrf/#how-to-use-it

我得出的结论是,除非您信任使用该页面的人,否则使用它是无效的。它是否正确?

我想我真的不明白什么时候可以安全地使用它,因为这个声明:

对于针对外部 URL 的 POST 表单,不应执行此操作,因为这会导致 CSRF 令牌泄露,从而导致漏洞。

令人困惑的原因是;对我来说,“外部 URL”将是不属于我的域的页面(即,我拥有 www.example.com 并放置一个发布到 www.spamfoo.com 的表单。显然情况并非如此因为人们不会使用 Django 来生成发布到其他人网站的表单,但是你怎么可能不能在公共表单(例如登录表单)上使用 CSRF 保护呢?

security django csrf django-csrf

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

Django - 删除对象而不删除其相关对象

我有两个型号:

class Client(models.Model):
    some_field = models.CharField()

class Ticket(models.Model):
    client = models.ForeignKey(Client)
Run Code Online (Sandbox Code Playgroud)

Tickets 在我的系统中是永远的,但我希望用户能够删除他们不再需要的客户端.目前它将删除由该创建的所有票证Client.

  1. 这是一个坏主意(从架构上讲),我应该把它们标记为什么not_needed或者其他东西?
  2. 如果这不是一个坏主意,那么最好的方法是什么,同时保持DRY.我不想delete()为每个执行此操作的模型覆盖,但是如果必须的话(如果这是唯一的方法,那么最好的方法是什么).

django django-models

5
推荐指数
2
解决办法
5418
查看次数

Python - 缓存属性以避免将来计算

在以下示例中,cached_attr用于related_spam在调用数据库昂贵的属性(在示例中)时获取或设置模型实例上的属性.在示例中,我cached_spam用来保存查询.我在设置和获取值时放置了print语句,以便我可以测试它.我通过将Egg实例传递到视图和视图中来测试它,并使用模型{{ egg.cached_spam }}上的其他方法Egg调用cached_spam他们自己.当我完成并测试它时,Django的开发服务器中的shell输出显示属性缓存被错过了好几次,并成功获得了几次.这似乎是不一致的.使用相同的数据,当我进行小的更改(只需更改print语句的字符串)并刷新(使用所有相同的数据)时,会发生不同数量的未命中/成功.这是怎么发生的?这段代码不正确或有问题吗?

class Egg(models.Model):
    ... fields

    @property
    def related_spam(self):
        # Each time this property is called the database is queried (expected).
        return Spam.objects.filter(egg=self).all()  # Spam has foreign key to Egg.

    @property
    def cached_spam(self):
        # This should call self.related_spam the first time, and then return
        # cached results every time after that.
        return self.cached_attr('related_spam')

    def cached_attr(self, attr):
        """This method (normally attached via an abstract base class, …
Run Code Online (Sandbox Code Playgroud)

python django attributes caching properties

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

如何在 HTTP GET 请求中发送原始数据?

http://alx3apps.appspot.com/jsonrpc_example/的示例中,当我单击提交按钮时,我注意到(通过使用 Firebug)我的浏览器提交了源代码:

{"params":["Hello ","Python!"],"method":"concat","id":1}
Run Code Online (Sandbox Code Playgroud)

不是发布参数(例如json=[encoded string from above]),而是发布具有上述值的原始字符串。

是否有一种广泛接受的方法可以通过 GET 请求复制它,或者我是否只需要对相同的字符串进行 urlencode 并将其包含为http://www.example.com/?json=%7b%22params%22%3a%5b%22Hello+%22%2c%22Python!%22%5d%2c%22method%22%3a%22concat%22%2c%22id%22%3a1%7d?我知道一些较旧的浏览器无法处理超过 250 个字符的 URI,但我对此表示同意。

post get http xmlhttprequest urlencode

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

为什么在 Python 函数调用中参数太多/太少时会出现 TypeError

我无法理解为什么TypeError当你提供不属于方法签名的参数时 Python 会引发 a 。

例子:

>>> def funky():
...    pass
... 
>>> funky(500)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: funky() takes no arguments (1 given)
Run Code Online (Sandbox Code Playgroud)

我想,如果这是因为*args预期是None[]在无参数函数的范围内,那就是一个泄漏的抽象,所以我查了一下。

我发现了什么

在PEP-3102TypeError上进行的页面搜索发现,似乎是在其中提出的一种上下文的合理性,但我不明白其合理性。PEP 的示例本质上是在说明该功能基本上是. 在这种情况下是一个非空列表,而不是一个空列表......它们都是相同的类型。如果我没记错的话,这确实合理的,也许 a会更合适。然而,这仍然是一种有漏洞的抽象,因为该示例是用 Python 编写的,这使其更多地是特定用例的实现细节,而不是语言功能。类似的东西对我来说听起来更合适,这让我相信有一些明显的解释我错过了为什么有意义。TypeErrorif args: raise TypeError()argsValueErrorArgumentErrorTypeError

python api-design

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