当通过服务访问时,Jython会缓存值

时间:2015-02-20 09:35:28

标签: jython

我有两个python文件。一个名为Test.py.这从getList.py文件中调用方法get_values()



#Test.py
import sys
sys.path.insert(0,"/data/")
import getList
import json
final_list = getList.get_values()
print json.dumps(final_list)






#getList.py
import sys
sys.path.insert(0,/data/pymongo/)
import pymongo
from pymongo import Connection


def get_values():
	final_list = list()
	connection = Connection('localhost', 5000)
	db = connection.testScript
	collection = db.scriptCache
	for post in collection.find({},{"author":1,"_id":0}):
        	final_list.append(post)
	return final_list




我正在使用jython从java执行文件Test.py,代码如下:



public void executeScript(String inputFile, String outputFile) throws FileNotFoundException {
		final PythonInterpreter inter = new PythonInterpreter();
		Writer writer = null;
		writer = new BufferedWriter(new OutputStreamWriter(new    FileOutputStream(outputFile)));
		inter.setOut(writer);
		inter.execfile(inputFile);
	}




mongo文档结构是: {" _id" :ObjectId(" 54e6e9338c27b9a4542b1499")," name" :" Python","作者" :"詹姆斯" }

在getList.py中,我正在查询"作者"首次。如果我执行Test.py,它会返回正确的结果。

后来我正在编辑getList.py来查询" name"并执行Test.py但我得到的结果与#34; author"。

相同

仅在通过服务执行java类时才会出现此问题。如果我通过一个独立的程序执行相同的操作,它可以正常工作。

是否需要配置任何属性以避免此类缓存?

1 个答案:

答案 0 :(得分:0)

Python第一次调用时会缓存getList的结果,并在再次访问时返回相同的值。

每次执行Test.py时执行getList.py,我们需要重新加载getList.py。

包含下线(重新加载)解决了这个问题。

导入getList

重载(的GetList)