这是我的http服务器:
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
class test:
def show(self):
return "aaaa"
class http_server:
def __init__(self, t1):
self.t1 = t1
server = HTTPServer(('', 8080), myHandler)
server.serve_forever()
class myHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
self.wfile.write(self.t1.show()) #Doesnt work
return
class main:
def __init__(self):
self.t1 = test()
self.server = http_server(self.t1)
if __name__ == '__main__':
m = main()
Run Code Online (Sandbox Code Playgroud)
我需要访问myHander中的实例t1.
有什么方法可以做到吗?
谢谢!
python basehttpserver httpserver requesthandler basehttprequesthandler
我想捕获并处理DeadlineExceededError,因此用户看不到App Engine默认抛出的标准"服务器错误"页面.
我知道在请求处理程序中重写handle_exception时,不会捕获 DeadlineExceededErrors (我们已经这样做了).
到目前为止,我已尝试使用自定义error_handlers app.yaml配置,但未成功:
error_handlers:
- error_code: timeout
file: timeout.html
Run Code Online (Sandbox Code Playgroud)
...但是,除非我做错了,否则它似乎也没有捕获DeadlineExceededErrors.
我知道我可以使用以下模式来捕获特定请求处理程序中的DeadlineExceededErrors:
class MainPage(webapp.RequestHandler):
def get(self):
try:
# Do stuff...
except DeadlineExceededError:
# Many Whelps! Handle it!
Run Code Online (Sandbox Code Playgroud)
...但我想避免将其添加到我的应用程序中的每个请求处理程序.
我怎样才能在全球范围内捕获这些难以捉摸的吸盘?
我试图在Tornado的RequestHandler中实现get_current_user,但是在等待对数据库的异步调用时我需要调用阻塞.使用@ tornado.web.asynchronous修改调用将不起作用,因为get_current_user方法在异步查询完成之前返回并执行查询回调.
例如:
class MyHandler(BaseHandler):
@tornado.web.asynchronous
@tornado.web.authenticated
def get(self):
self.write('example')
self.finish()
class BaseHandler(tornado.web.RequestHandler):
def get_current_user(self):
def query_cb(self, doc):
return doc or None
database.get(username='test', password='t3st', callback=query_cb)
Run Code Online (Sandbox Code Playgroud)
@ tornado.web.authenticated调用get_current_user,但始终收到"None",因为BaseHandler没有时间响应.有没有办法,使用龙卷风,暂时阻止呼叫,如上面的呼叫?
我想定义一个REST API,其一般模式为:
mysite.com/OBJECT_ID/associations
例如:
mysite.com/USER_ID/vacations
- 管理用户度假mysite.com/USER_ID/music
- 管理用户音乐库中的音乐mysite.com/PLAYLIST_ID/music
- 在给定播放列表的上下文中管理音乐我在服务器端使用龙卷风,并寻找有关如何为此API定义RequestHandlers的建议.例如,我想定义一个像这样的处理程序:
/([0-9,a-z,A-Z,-]+)/music",MusicHandler),
但是我坚持使用MusicHandler的实现,它需要知道uri中指定的对象是否首先支持音乐,即如何防范类似的调用
mysite.com/LOCATION_ID/music
地点与音乐无关.
是修改api以包含类型的最佳修复方法,即:
mysite.com/users/USER_ID/music
要么
mysite.com/playlists/PLAYLIST_ID/music
然后为每个处理单独的处理程序:
/users/([0-9,a-z,A-Z,-]+)/music",UserMusicHandler),
/playlists/([0-9,a-z,A-Z,-]+)/music",PlaylistMusicHandler)
这似乎不对,但我真的不明白如何使这项工作.我确定这是一个简单的问题,我是python和龙卷风的新手.
简短的问题:我正在寻找一种方法 (java) 来拦截对 Solr 的查询并注入一些由我的业务逻辑提供的额外过滤参数。我应该使用什么结构?
背景:首先,承认一点:我是 Solr 的菜鸟。对我来说,设置一个服务器,定义一个模式,编写一个功能索引管理器,然后实际看到服务器返回正确的结果 - 完全符合预期!- 对自己来说已经是很大的成就了。耶我!
但是,我目前正在从事一个需要多一点的企业项目。粗略地说,solr 实例是通过同一个 requestHandler 被数千个用户查询的,即根据用户的权限级别自动过滤返回的文档。例如,如果用户 A 和超级用户 B 尝试了完全相同的搜索参数(即使是完全相同的 url),则用户 B 将获取用户 A 的所有文件,然后再获取更多。为了实现这一点,文档已经用必要的权限级别信息编入索引。
好吧,考虑到这一点并利用 Solr 为新手开发人员提供的大量文档,我尝试提出一个简单的自定义 requestHandler 来覆盖 handleRequest 函数,以便在 SolrQueryRequest 中注入必要的额外参数。一切都很好——除了我在 QueryResponse 中根本没有看到任何区别,服务器粗鲁地忽略了我的小操作。如果这是最好的方法,在没有太多提示天气的情况下在网上搜索了几天后,最终决定来打扰 StackOverflow 上的好人。
所以,简而言之,我的问题是:
这是正确的方法吗?还有其他选择吗?我已经可以掌握 Solr 的一些概念,但不可否认,其中有很多不足,而且完全有可能遗漏了一些东西。
如果是这样,在修改查询参数后,我应该做些什么来强制更新 QueryResponse?据我所知,这些只是封装了 http 请求,在进行修改后,我无法嗅探到任何查询服务器的内容。
提前致谢,非常抱歉这篇长文!
经过大量阅读 API 和特别多的反复试验后,我设法获得了一个功能解决方案。然而,我仍然无法理解 Solr 的大部分内部结构,因此仍然希望得到一些启发。随意打吧,我还是很清楚我的菜鸟。
解决方案的相关部分是这个函数,它被覆盖的 handleRequestBody 调用:
private void SearchDocumentsTypeII(SolrDocumentList results,
SolrIndexSearcher searcher, String q,
UserPermissions up, int ndocs, SolrQueryRequest req,
Map<String, SchemaField> fields, Set<Integer> alreadyFound)
throws IOException, ParseException {
BooleanQuery bq …
Run Code Online (Sandbox Code Playgroud) 我正在尝试从json post请求获取标头内容.但我似乎无法在requesthandler中找到它的方法...
print_r($this->request);
没有显示任何有用的东西.我试过了
$this->request['head'];
$this->request['header'];
$this->request->getHeaders;
Run Code Online (Sandbox Code Playgroud)
这些都不起作用
python ×2
tornado ×2
asynchronous ×1
cakephp ×1
httprequest ×1
httpserver ×1
java ×1
rest ×1
solr ×1