【发布时间】:2017-02-24 07:57:42
【问题描述】:
我在龙卷风应用程序中遇到了一些非常奇怪的行为。 我正在运行很多进程,每个进程都有自己的 HTTP 服务器并在不同的端口上运行。
我向系统添加了一个新进程,它是另一个 TCPServer 类,它侦听一个完全不同的端口,并且与其他进程没有任何交互。
我按如下方式启动新服务器:
def runSimService(port):
sim=SimService()
sim.listen(port)
currentIOLoop = tornado.ioloop.IOLoop.current()
currentIOLoop.start()
class SimService(TCPServer):
def __init__(self,host='localhost',motorport=27017):
TCPServer.__init__(self)
self.log=logging.getLogger("tornado.access")
# Needs to contain a User class log.
self.con=motor.MotorClient(host,motorport)
self.db=self.con.pDB
self.col=self.db.pCol
基本上这是我在调试时留下的唯一代码。我得到的崩溃不是正常的python异常崩溃,这让我很担心。
我现在正在 Mac 上开发。有人可以解释一下这个崩溃是我的代码有问题还是这里发生了其他事情?'
更新:
好吧,这真的很奇怪,它似乎只在我导入以下内容时才会发生:
from nltk.stem.snowball import SnowballStemmer
或
from nltk import word_tokenize, pos_tag
或一般的 nltk...
库之间会发生一些奇怪的交互吗?我卡住了
创建进程的代码
if __name__ =='__main__':
AsyncHTTPClient.configure("tornado.curl_httpclient.CurlAsyncHTTPClient",max_clients=2000)
processes=[]
processes.append(Process(target=runSimServer,args=(...,)))
processes.append(Process(target=runServer,args=(...)))
processes.append(Process(target=runServer,args=(...)))
processes.append(Process(target=runServer,args=(...)))
processes.append(Process(target=runServer,args=(...)))
processes.append(Process(target=runServer,args=(...)))
# write pids to pid/ directory for use with the shutdown program
with open("pid/"+__file__.split(".")[0]+".pid","w") as f:
for p in processes:
p.start()
f.write(str(p.pid)+"\n")
谢谢
【问题讨论】: