python - 有哪些最快的处理方法?

标签 python django performance hadoop amazon-ec2

我的应用程序正处于十字路口——我正在使用 python/django、mysql 和 ubuntu 12.04

我的应用程序将在线访问其他应用程序,为它们的路径结构建立索引,并提交表单。如果您认为这种情况发生在 10 或 100 个帐户中,每个帐户都有 1 个或多个域名,性能可能会有点失控。

我最初的想法是设置一个 ec2 环境,以在多个 ec2 实例之间分配访问每个域上所有这些路径的负载,每个实例都运行 celery/rabbitmq 以在这些 ec2 实例之间分配处理负载。

问题是 - 我想存储提交我访问的表单的结果。我读到我可能需要使用 nosql 数据库(例如 hadoop、redis 等)。

我的问题是:

  • 是否有将 celery/rabbitmq 与 SQL-db 一起使用的不同方法,优点/缺点是什么? 我可以看到必须使用 nosql 的一个问题:学习曲线。
  • 其次:是否有其他方法可以在多个 ec2 环境中分配同时运行的多个 python 脚本的(处理)负载?

谢谢。

最佳答案

Is there a different way to use celery/rabbitmq with a SQL-db and what are the advantages/disadvantages? I can see one problem with having to use nosql : the learning curve

是的。

  1. 如果您正在谈论存储您的 Django 应用程序/模型数据,您可以将它与任何 SQL 类型的数据库一起使用,只要您有它的 Python 绑定(bind)。大多数流行的 SQL 数据库都有 python 绑定(bind)。

  2. 如果您指的是将任务结果存储在特定后端,则支持多个数据库/协议(protocol) SQL 和 noSQL。我认为将结果存储在 SQL(MySQL、Posgtgres)或 noSQL(Mongo、CouchDB)中没有具体的优势或劣势,但这只是我个人的意见,这取决于您运行的应用程序类型。这些是您可以用于 SQL 数据库的一些示例(来自他们的文档):

    # sqlite (filename) CELERY_RESULT_BACKEND = ‘db+sqlite:///results.sqlite’
    # mysql CELERY_RESULT_BACKEND = ‘db+mysql://scott:tiger@localhost/foo’
    # postgresql CELERY_RESULT_BACKEND = ‘db+postgresql://scott:tiger@localhost/mydatabase’
    # oracle CELERY_RESULT_BACKEND = ‘db+oracle://scott:tiger@127.0.0.1:1521/sidname’
    
  3. 如果您指的是代理(队列机制),celery 仅支持 RabbitMQ 和 redis。

Secondly: is there some other way to distribute the (processing) load of several python scripts being run at the same time on multiple ec2 environments?

这正是 celery 所做的,您可以在多台机器上设置您的工作人员,这些机器可以是不同的 EC2 实例。然后你所要做的就是将他们的 celery 安装指向你配置中的相同队列/代理。如果你想在你的代理(RabbitMQ 和/或 Redis)中有冗余,你应该考虑在集群配置中设置它们。

关于python - 有哪些最快的处理方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23092166/

相关文章:

python - 按 MultiIndex 的一级对 pandas DataFrame 进行排序

python - 什么时候应该使用 Unicode 字符串?

Javascript不会从django进行跨域请求

python - 使用 numpy 加载和存储稀疏数据的性能

python - 无法在 Python 上安装 iPy

python - 如何枚举 Linux 的所有有效时区?

python - R 相当于 Python 的 dask

python - 如何在 INSTALLED_APPS 中包含必备应用

performance - 矢量化双循环 - MATLAB

ios - Quartz Performance 绘图大缓冲区