Eurasia访问数据库的一个方案,请鉴定

39 views
Skip to first unread message

Jone Wang

unread,
Oct 3, 2011, 3:28:51 AM10/3/11
to eurasia-users
在Eurasia与数据库访问中间,写一个数据库访问service
service也是用python实现
service中建立两个stackless线程,一个用于读数据库,一个用于写数据库,异步
把请求的sql语句放入一个队列中
读或写线程从列队中依次向数据库执行sql语句
使用数据库连接池

Eurasia只需不断请求此service即可
service异步返回sql语句的执行结果

请大牛们鉴定,或者提出更好的建议

老光

unread,
Oct 7, 2011, 9:01:37 PM10/7/11
to eurasi...@googlegroups.com
在哪儿呢?给个地址。

是需要另起一个进程,还是在主eurasia里import你的一个文件即可?具体使用方法上,给两个例子咯!
还有我觉得读的线程可以多开几个,写的少开比如你那一个。这对sqlite特别适用。
> --
> 您收到此邮件是因为您订阅了 Google 网上论坛的“eurasia-users”论坛。
> 要向此网上论坛发帖,请发送电子邮件至 eurasi...@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 eurasia-user...@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/eurasia-users?hl=zh-CN 访问此网上论坛。
>
>

Wilhelm Shen

unread,
Oct 7, 2011, 9:10:16 PM10/7/11
to eurasi...@googlegroups.com
数据访问 service 建议用多线程实现。

Jone Wang

unread,
Oct 7, 2011, 9:12:43 PM10/7/11
to eurasia-users
不是import一个文件,是单独起一个服务器
供Eurasia服务器数据库操作调用

此方案正在实现过程中
可能日后完成了发出来

Jone Wang

unread,
Oct 7, 2011, 9:15:26 PM10/7/11
to eurasia-users
您所说多线程实现
是指用python的多线程 而不使用stackless吗

On 10月8日, 上午9时10分, Wilhelm Shen <wilei...@gmail.com> wrote:
> 数据访问 service 建议用多线程实现。
>

老光

unread,
Oct 7, 2011, 9:51:49 PM10/7/11
to eurasi...@googlegroups.com
肯定讪!
不管是stackless python的tasklet,还是greenlet的那些个东东,叫微程的,访问数据库时都会阻塞整个进程(BLOCK?),所以会阻塞其他微程。

----- Original Message -----
From: "Jone Wang" <tu...@foxmail.com>
To: "eurasia-users" <eurasi...@googlegroups.com>

Wilhelm Shen

unread,
Oct 7, 2011, 9:55:06 PM10/7/11
to eurasi...@googlegroups.com
在 2011年10月8日上午1:51,老光 <yaogua...@cq.chinatelecom.com.cn> 寫道:
> 肯定讪!
> 不管是stackless python的tasklet,还是greenlet的那些个东东,叫微程的,访问数据库时都会阻塞整个进程(BLOCK?),所以会阻塞其他微程。

是这样的。

Jone Wang

unread,
Oct 8, 2011, 9:16:28 PM10/8/11
to eurasia-users
那微线程应用在哪种场景较为合适呢

老光

unread,
Oct 8, 2011, 9:40:10 PM10/8/11
to eurasi...@googlegroups.com
我理解,是需要较高并发量,但每个微程不需要频繁IO的;或者微程通过沈大改造过的socket2进行IO的;或是微程操作那种内存数据库的。
或者象你设计的这样,通过专门的微程来进行异步IO接口,但异步是通过另外的线程或进程来实现的。

初看过erlang的入门书,并发,erlang真的好强大 。

----- Original Message -----
From: "Jone Wang" <tu...@foxmail.com>
To: "eurasia-users" <eurasi...@googlegroups.com>

Zero Fan

unread,
Oct 10, 2011, 6:35:33 AM10/10/11
to eurasia-users
有一个可能,用gevent-mysql的异步库实现独立server,不知道性能如何?http://github.com/mthurlin/
gevent-MySQL

此外,Eurasia可否import gevent 用于实现和Redis的异步IO。 redis-py的库默认是unixsocket模式,消耗
句柄比较大,目前4000个持续并发就挂掉了

参考一下:多个异步服务器的测试 Tornado和Gevent 胜出 http://nichol.as/asynchronous-servers-in-python

Zero Fan

unread,
Oct 10, 2011, 6:35:57 AM10/10/11
to eurasia-users
Reply all
Reply to author
Forward
0 new messages