つまり、CherryPy が同じリソースに対して 2 つの requeste を同時に取得するとどうなるか、変数が混在しているのか、それとも何が起こっているのかわかりません。
この問題があります。Python 2.7 と CherryPy 3.2.2 で非常に基本的な Web サービスを作成しようとしています。
Web サービスは、jquery/ajax を使用して Web サービスに ajax リクエストを行うフロント エンドによって消費されます。
今、CherryPy プログラムを作成し、組み込みの wsgi サーバーを使用しています。次のようなCherryPy構成があります:
conf = {
'global': {
'server.socket_host': '127.0.0.1',
'server.socket_port': 8000,
},
'/': {
'request.dispatch': cherrypy.dispatch.MethodDispatcher(),
}
}
cherrypy.quickstart(root, '/', conf)
そして、私は持っています:
root.customers = getCustomers()
そして、これの実際のクラス:
class getCustomers(object):
def __init__(self):
pass
exposed = True
def GET(self,callback,**kwargs):
self.callback = callback
self.cnxn= pyodbc.connect(constr)
self.cursor = self.cnxn.cursor()
cherrypy.response.headers['Content-Type']='application/json'
self.cursor.execute("""select * from customers
""", self.job_worknumber)
self.customers = self.cursor.fetchall()
self.objects_list = []
for c in self.customers
r = collections.OrderedDict()
r['customer_id'] = c.customer_id
r['customer_name'] = c.customer_name
self.objects_list.append(r)
self.cursor.close()
self.cnxn.close()
self.w = collections.OrderedDict()
self.w['data1'] = self.objects_list
#w['errors'] = 'error'
self.j = json.dumps(self.w)
#cursor2.close()
return self.callback+'('+self.j+');'
GET リクエストを作成すると、必要なものが得られますが、ページの読み込み時に 2 つの GET リクエストを Web サービスに送信する Web ページを作成すると、2 番目のリクエストはほとんどの場合、次のようなエラーで失敗します。
ProgrammingError: Attempt to use a closed cursor.
または他の時:
ProgrammingError: No results. Previous SQL was not a query
では、何が起こっているのですか?私のリクエストは、同時に実行される同じ変数を共有していますか? 一度に 1 つのリクエストのみを処理するように CherryPy を設定できますか?