Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何创建异步Tornado HTTP服务器?_Python_Asynchronous_Tornado_Couchbase - Fatal编程技术网

Python 如何创建异步Tornado HTTP服务器?

Python 如何创建异步Tornado HTTP服务器?,python,asynchronous,tornado,couchbase,Python,Asynchronous,Tornado,Couchbase,我已经编写了以下HTTP重定向服务器。在测试期间,我意识到它是以阻塞的方式进行调用的,主要是因为对couchbase的同步调用。如何在给定套接字上运行并行请求响应?我是否应该对db进行异步调用 class ABC(web.RequestHandler): def get(self): self.MartiniTagKey = self.get_argument("mtag", strip=True) #TEST1

我已经编写了以下HTTP重定向服务器。在测试期间,我意识到它是以阻塞的方式进行调用的,主要是因为对couchbase的同步调用。如何在给定套接字上运行并行请求响应?我是否应该对db进行异步调用

class ABC(web.RequestHandler):

        def get(self):
                self.MartiniTagKey = self.get_argument("mtag", strip=True) #TEST1
                self.couchbase_start_time = time.time()
                couchbase_query_result = bucket.get(self.MartiniTagKey) #TEST2
                self.CouchbaseMS = time.time() - self.couchbase_start_time
                url_to_redirect = json.loads(couchbase_query_result[2])['metaTag'] #TEST3
                self.redirect(url_to_redirect)  



if __name__=="__main__":
        options.options.log_file_prefix = log_directory
        options.parse_command_line()
        db=MySQLdb.connect(host=mysql_host, user=mysql_user,
        passwd=mysql_password, port=int(mysql_port), db=mysql_db)
        cursor = db.cursor()
        couchbase = Couchbase(couchbase_host+':'+couchbase_port, couchbase_bucket, couchbase_password)
        process.fork_processes(0)
        bucket = couchbase[couchbase_bucket]
        app = web.Application(handlers=[(r"/", ABC),])
        app.listen(8080,"")
        io_loop = ioloop.IOLoop.instance()
        io_loop.start()

目前,有一个新的Python SDK正在开发中,它仍然是同步的,但计划使其异步。欢迎您帮助实现异步:如果您希望couchbase的异步驱动程序,请检查。它没有couchbase XPS的链接。您也可以让自己启动一个新线程,然后无论它做什么,从Tornado的角度来看都是非阻塞的-使用回调和@async装饰程序