美文网首页
Bottlepy的一点小问题

Bottlepy的一点小问题

作者: 复制完美 | 来源:发表于2017-06-23 05:39 被阅读0次

第一次写东西呀,嘻嘻☺️不断学习不断反省!


因为这个问题并不清楚是不是Bottlepy的本意,所以只能称之为问题而不是bug。
公司需要用网页访问串口,网页当然只能用JS了,但是浏览器运行的JS是运行在沙箱模式下,不能访问串口这么底层的硬件(Node.js这种非浏览器运行的JS是可以的)。走了许多弯路之后选择用Bottlepy建立一个localhost,网页再访问localhost即可实现访问硬件。但是,这样直接用Ajax访问属于跨域的,需要CORS相关支持。于是需要在服务器上稍微设置一下。把每次Ajax请求用一个header包裹一下。

@bottle.hook('after_request')
def enable_cors():
    bottle.response.headers['Access-Control-Allow-Origin'] = '*'

但是实测仍然是500错误,Chrome控制台一看Ajax并没有header(此处应有图)。网上Google了外国人的资料并没有有用的东西,最后还是靠国人的文章提示才弄明白(原文是互相转载的,我也搞不清原作者是谁,一并谢过)。Bottlepy的源代码中有一段初始化header的代码(下段被注释掉的代码)在我们执行上述代码之后,实际上等于把我们的设置都变成无用功了。修改一下,如果已经有header了就不要初始化了,问题解决。

class HTTPResponse(Response, BottleException):
    def __init__(self, body='', status=None, headers=None, **more_headers):
        super(HTTPResponse, self).__init__(body, status, headers, **more_headers)

    def apply(self, response):
        response._status_code = self._status_code
        response._status_line = self._status_line
        # response._headers = self._headers
        if self._headers:
            if response._headers:
                response._headers.update(self._headers)
            else:
                response._headers = self._headers
        response._cookies = self._cookies
        response.body = self.body

在GitHub上看官方解释,有个人提议把@bottle.hook('after_request')改成@bottle.hook('before_request'),我并没有试过这样行不行。


访问localhost奇慢,而且第一次访问一定要等至少10秒钟才会有结果,在这十秒钟之内的Ajax也是pending到10秒一起返回,之后的任何Ajax都要延时3到4秒。这倒不是Bottlepy的问题,是我使用的系统设置问题。貌似是因为默认启用了IPv6但是实际上又没用到IPv6导致的。解析localhost不是::1会花很长时间,直接访问127.0.0.1就没事了。


把localhost指定到0.0.0.0即可实现局域网内任何电脑访问192.168.X.X(你的IP)就能访问你建立的localhost了。

bottle.run(host='0.0.0.0', port=8080, debug=True)

相关文章

  • Bottlepy的一点小问题

    第一次写东西呀,嘻嘻☺️不断学习不断反省! 因为这个问题并不清楚是不是Bottlepy的本意,所以只能称之为问题而...

  • Bottle

    http://bottlepy.org/docs/dev/Bottle 是Python微型框架中的微型框架一个py...

  • 一点小问题

    简书前段时间添加了日更挑战、“行距”杯征文、晨间日记等活动,就在一个多月前,我也参加日更挑战这个活动了,目的就是记...

  • 一点小问题

    Vue中Ajax的使用由于Vue中,data域的变量不能动态声明,所以在调用Ajax时,可以采用两种方法。 在da...

  • 一点小问题

    可能是假期过得太舒服。开学后,孩子早上总会闹一会儿,不想去学。 理由是:为什么这么快假期就结束了,还没玩够呢。 持...

  • 一点小问题

    因为久坐,腰有些不好了。 躺着的时候,某个地方酸痛明显。 昨天有个朋友说,他有段时间腰也不好。所以一个医生朋友说坐...

  • 1.linux 下安装bottle框架

    1. Linux环境里安装比较简单 2.只需要在你想要的地方运行命令:wget http://bottlepy.o...

  • 碰到的一点小问题

    1.设置 self.title , self.navigationItem.title 结果文字都不显示。这时...

  • checkbox的一点小问题

    当我们在列表里面使用checkbox的时候,并且为它设置了onCheckChangeListener监听。然而一些...

  • 360的Excel 文件读写库(golang)存在的一点小问题

    本周使用360的Excel文件读写库时发现一个小问题 本周使用360的Excel文件的读写库的时候发现一点小问题。...

网友评论

      本文标题:Bottlepy的一点小问题

      本文链接:https://www.haomeiwen.com/subject/wzmqcxtx.html