Python 处理这个问题最快的方法是什么?

Python 处理这个问题最快的方法是什么?,python,django,performance,hadoop,amazon-ec2,Python,Django,Performance,Hadoop,Amazon Ec2,在我的应用程序中,我正处于一个十字路口——我正在使用python/django、mysql和Ubuntu12.04 我的应用程序将在线访问其他应用程序,对其路径结构进行索引,并提交表单。如果你认为10或100个帐户中每个帐户有一个或多个域名,那么性能可能会有点失控 我最初的想法是设置一个ec2环境,将访问每个域上所有这些路径的负载分布在多个ec2实例上,每个实例运行芹菜/rabbitmq,将处理负载分布在这些ec2实例上 问题是-我想存储提交表单的结果,我可以访问这些表单。我读到我可能需要使用n

在我的应用程序中,我正处于一个十字路口——我正在使用python/django、mysql和Ubuntu12.04

我的应用程序将在线访问其他应用程序,对其路径结构进行索引,并提交表单。如果你认为10或100个帐户中每个帐户有一个或多个域名,那么性能可能会有点失控

我最初的想法是设置一个ec2环境,将访问每个域上所有这些路径的负载分布在多个ec2实例上,每个实例运行芹菜/rabbitmq,将处理负载分布在这些ec2实例上

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

我向大家提出的问题是:

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

是否有不同的方式将芹菜/rabbitmq与SQL数据库一起使用,以及如何使用 优点/缺点是什么?我能看出一个不得不这样做的问题 使用nosql:学习曲线

  • 如果您正在谈论存储Django应用程序/模型数据,那么您可以将其用于任何SQL类型的数据库,只要您有Python绑定即可。大多数流行的SQL数据库都有python绑定

  • 如果您指的是将任务结果存储在特定后端,则支持多个数据库/协议SQL和noSQL。我相信将结果存储在SQL(MySQL,Posgtgres)或noSQL(Mongo,CouchDB)中没有什么特别的优势或劣势,但这只是我个人的观点,这取决于您运行的应用程序的类型。以下是一些可用于SQL数据库的示例(来自它们的文档):

  • 如果您指的是代理(队列机制),芹菜只支持RabbitMQ和redis

  • 第二:是否有其他方法来分配(处理)负载 在多个ec2上同时运行多个python脚本 环境


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

    当然可以在多台机器上运行芹菜。它将把任务分发给从属节点。至于nosql,我会研究redis和mongodb。两人都擅长他们的工作,非常彻底。谢谢@RicoIn您的#3回复:如果是分布式的,它会将值存储在nosql数据库(如redis)上吗?或者可以(在每个ec2节点上)使用mysql吗?@CodeTalk当然可以,但这是排队机制,而不是任务结果
    # 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’