所以我有一个通过 http.get 调用来调用的方法。
@app.route('/showSQL')
def get_sql():
spid = request.args['spid']
instance = request.args['instance']
user = creds.creds['bh1']['user']
pw = creds.creds['bh1']['pass']
print 'calling show sql', spid, instance
conn = pymssql.connect(instance, user, pw)
cursor = conn.cursor(as_dict=True)
cmd = 'EXEC master..getSpidSQL ' + str(spid)
cursor.execute(cmd)
sql_out = None
for row in cursor:
sql_out = row['EventInfo']
return sql_out
我读到这个错误是由多线程等引起的,但这里没有什么复杂的。此方法的第一行抛出错误:'spid = request.args['spid']'
>>> longrunners.get_sql()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/tools/dba/longrunners/longrunners.py", line 48, in get_sql
spid = request.args['spid']
File "/usr/local/lib/python2.7/site-packages/werkzeug/local.py", line 343, in __getattr__
return getattr(self._get_current_object(), name)
File "/usr/local/lib/python2.7/site-packages/werkzeug/local.py", line 302, in _get_current_object
return self.__local()
File "/usr/local/lib/python2.7/site-packages/flask/globals.py", line 20, in _lookup_req_object
raise RuntimeError('working outside of request context')
RuntimeError: working outside of request context
我有其他方法可以成功访问请求对象,并且已经验证我实际上是从浏览器发送一个名为“spid”的参数。
有什么想法可能导致这种情况吗?我浏览了很多其他问题并在网上查看,但没有发现任何可以处理这种特殊情况的内容。
Thanks!