我花了很长时间才弄清楚是什么问题,现在我不知道怎么解决它。在
我用pythonanywhere来管理我的网页.py服务器
所以问题来了。这个网页.py实例不会在服务器请求之间停止运行。 让我来演示一下赫彭的原因。在
我有一个在循环中填充列表.追加(数字) 因此,在第一次向服务器发出请求时,脚本运行良好。 列表=(1,2,3)
但是,自从网页.py实例没有停止,在对服务器列表的第二个请求中,最后变成(1,2,3,1,2,3),我的脚本无法工作。在
我怎么知道网页.py在请求之间不停止运行?当我在脚本生命周期结束时删除每个名称空间时,对服务器的第二个请求返回一个错误,说“web未定义”
class web_serve:
def GET(self):
data_obj = volumePit_google()
plotter = volumePit_plot()
data_obj.download('SPY', 2)
data_obj.organize()
price, volume = zip(*data_obj.data_final)
plot_edges = data_obj.plotter_edges
e_test = data_obj.data_ticks
plotter.maxmin(price)
data_obj.plotter_ticks()
for i, tick in enumerate(data_obj.data_ticks[1:]):
edges = [data_obj.data_ticks[i], tick]
volume_edges = [plot_edges[i], plot_edges[i+1]]
day_data = data_obj.data_final[edges[0]:edges[1]]
price, volume = zip(*day_data)
plotter.dividers(volume_edges)
price_position = data_obj.price_action(price, [volume_edges[0], volume_edges[1]])
plotter.subplot.plot(price_position, price, color='g', ls='-', lw='1')
histogram = data_obj.histogram(day_data, 0)
plotter.volume_profile(histogram, volume_edges)
plotter.ticks([data_obj.plotter_edges, data_obj.dates, data_obj.plotter_tick_pos])
data_stream = cStringIO.StringIO()
plt.savefig(data_stream, bbox_inches='tight')
data_stream.seek(0)
return_png = base64.b64encode(data_stream.read())
data_stream.close()
return return_png
需要清除的变量在数据对象中
我不知道是否值得一提,但下面的两个类都是在同一个文件中定义的 data_obj=volumepti_google() 绘图仪=volumePit_plot()
^{2}$
我无法想象为什么你希望服务器在请求之间停止。那将是非常低效的。在
您应该避免保留全局/模块级别的对象。在
编辑了现在您终于将代码发布到了
volumePit_google
类,我们可以看到问题出在哪里了。Python中在class级别定义的任何内容都是一个类变量,在类的所有成员之间共享。相反,您需要的是instance变量,这些变量是在每次实例化类时定义的:相关问题 更多 >
编程相关推荐