功能不是在蟒蛇
得到执行我有2个功能(recharge_list and sms_list)
在我下面Server()
类功能不是在蟒蛇
import os
import json
import requests
import cherrypy
import ConfigParser
from bs4 import BeautifulSoup
class Server():
@cherrypy.expose
def index(self):
return "Seems Like You're Lost :D"
@cherrypy.expose
def recharge_list(self,carrier, state):
details_array=[]
small_details_array=[]
price_cell_array=[]
lst = []
url = "link{}/{}".format(carrier,state)
try:
if self.t_arr.get(url) is not None:
return json.dumps({'data': self.t_arr[url]})
except AttributeError:
self.t_arr = {}
r = requests.get(url)
data = r.text
soup = BeautifulSoup(data,"html.parser")
table = soup.find('table',{'class':'table'})
s=""
detailtext = table.findAll('div',{'class':'detailtext'})
for det in detailtext:
details_array.append(det.text)
smalldetails = table.findAll('div',{'style':'padding-top:5px'})
for smallDet in smalldetails:
small_details_array.append(smallDet.text);
price_cells = table.findAll('td', {'class': 'pricecell'})
for price_cell in price_cells:
price_cell_array.append(price_cell.text)
for i in range(len(details_array)):
d_arr = {}
d_arr['detail']=details_array[i]
temp = small_details_array[i].split('\n')
d_arr['talktime'] = temp[1]
d_arr['keyword']=temp[3]
tempnew = price_cell_array[i].split('\n')
d_arr['price'] = tempnew[1]
d_arr['validity'] = tempnew[3]
# global list
lst.append(d_arr)
self.t_arr[url] = lst
return json.dumps({'data': self.t_arr[url]})
@cherrypy.expose
def sms_list(self,carrier, state):
details_array=[]
price_cell_array=[]
lst = []
url = "link/{}/{}".format(carrier,state)
try:
if self.t_arr.get(url) is not None:
return json.dumps({'data': self.t_arr[url]})
except AttributeError:
self.t_arr = {}
r = requests.get(url)
data = r.text
soup = BeautifulSoup(data,"html.parser")
table = soup.find('div',{'id':'SMS'})
table2 = table.find('table',{'class':'table'})
print(table2)
s=""
detailtext = table2.findAll('div',{'class':'detailtext'})
for det in detailtext:
details_array.append(det.text)
smalldetails = table2.findAll('div',{'style':'padding-top:5px'})
price_cells = table.findAll('td', {'class': 'pricecell'})
for price_cell in price_cells:
price_cell_array.append(price_cell.text)
for i in range(len(details_array)):
d_arr = {}
d_arr['detail']=details_array[i]
tempnew = price_cell_array[i].split('\n')
d_arr['price'] = tempnew[1]
d_arr['validity'] = tempnew[3]
# global list
lst.append(d_arr)
self.t_arr[url] = lst
return json.dumps({'data': self.t_arr[url]})
if __name__ == '__main__':
''' Setting up the Server with Specified Configuration'''
cherrypy.config.update({'server.socket_host': '0.0.0.0',})
cherrypy.config.update({'server.socket_port': int(os.environ.get('PORT', '5000')),})
cherrypy.quickstart(Server())
的问题是,当我跑我的服务器它的工作原理,但后来我不得不终止从终端我的服务器并重新启动服务器以执行sms_list
函数。
据我了解,曾经由Server
创建的对象只能执行第一个被调用的函数。
我应该在我的代码中编辑哪些内容,以便我可以在不终止服务器的情况下执行这些功能。
据我了解,一旦由
Server
创建的对象只能执行第一个被调用的函数。
事实并非如此。每次提供HTTP请求时,Web服务器都会调用与该请求的URL关联的函数。
我应该在我的代码中编辑哪些内容,以便我可以在不终止服务器的情况下执行这些功能。
在sms_list
(和在没有),与t_sms_arr
取代t_arr
每个实例。
我没有t_url变量 – penta
对不起,这是我的印刷错误。我的意思是'self.t_arr'。 –
你是什么意思“*我运行我的服务器与'recharge_list' *”?准确地说,你采取了什么行动,你观察到了什么结果? –
我在firefox http:// localhost:5000/recharge_list/airtel/karnataka中调用url,其中http:// localhost:5000/recharge_list /是基础url,airtel/karnataka是参数 – penta
然后会发生什么?这是否产生了预期的结果?它是否产生错误信息?你接下来访问http:// localhost:5000/sms_list?是什么让你相信你必须终止你的服务器? –