最快的处理方法是什么?

2024-06-07 02:58:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我的应用程序将访问其他应用程序在线,使他们的路径结构索引,并提交表格。如果你认为这种情况发生在10或100个帐户,每个帐户有一个或多个域名,性能可能会有点失控。你知道吗

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

问题是-我想存储我访问的提交表单的结果。我读到我可能需要使用nosqldb(例如hadoop、redis等)。你知道吗

我的问题是:

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

谢谢你。你知道吗


Tags: django实例方法路径应用程序环境mysqlrabbitmq
1条回答
网友
1楼 · 发布于 2024-06-07 02:58:37

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绑定即可。大多数流行的SQL数据库都有python绑定。

  2. 如果您指的是将任务结果存储在特定的后端,则支持多个数据库/协议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. 如果您指的是代理(队列机制),芹菜只支持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?

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

相关问题 更多 >