小编use*_*502的帖子

来自Flask路线的Python3 Asyncio调用

我想在每次执行flask路径时执行异步函数.目前我的abar函数从未执行过.你能告诉我为什么吗?非常感谢你:

import asyncio
from flask import Flask

async def abar(a):
    print(a)

loop = asyncio.get_event_loop()
app = Flask(__name__)

@app.route("/")
def notify():
    asyncio.ensure_future(abar("abar"), loop=loop)
    return "OK"

if __name__ == "__main__":
    app.run(debug=False, use_reloader=False)
    loop.run_forever()
Run Code Online (Sandbox Code Playgroud)

我也尝试将一个阻塞调用放在一个单独的线程中.但它仍然没有称之为abar功能.

import asyncio
from threading import Thread
from flask import Flask

async def abar(a):
    print(a)

app = Flask(__name__)

def start_worker(loop):
    asyncio.set_event_loop(loop)
    try:
        loop.run_forever()
    finally:
        loop.close()

worker_loop = asyncio.new_event_loop()
worker = Thread(target=start_worker, args=(worker_loop,))

@app.route("/")
def notify():
    asyncio.ensure_future(abar("abar"), loop=worker_loop)
    return "OK"

if __name__ == "__main__":
    worker.start()
    app.run(debug=False, use_reloader=False)
Run Code Online (Sandbox Code Playgroud)

event-loop flask python-3.x python-asyncio

30
推荐指数
4
解决办法
2万
查看次数

clients.openWindow()"不允许打开窗口." 在serviceWorker Google Chrome上

我正在Chrome版本42.0.2311.152m下进行测试,我想实现在通知中打开一个窗口,如下例所示:(来源:https://developer.mozilla.org/en-US/docs/Web/API/WindowClient )

self.addEventListener('notificationclick', function(event) {
  console.log('On notification click: ', event.notification.tag);
  event.notification.close();

  // This looks to see if the current is already open and
  // focuses if it is
  event.waitUntil(clients.matchAll({
    type: "window"
  }).then(function(clientList) {
    for (var i = 0; i < clientList.length; i++) {
      var client = clientList[i];
      if (client.url == '/' && 'focus' in client)
        return client.focus();
    }
    if (clients.openWindow)
      return clients.openWindow('/');
  }));
});
Run Code Online (Sandbox Code Playgroud)

我的文件结构如下:
https
: //myurl.no-ip.org/app/index.html https://myurl.no-ip.org/app/manifest.json
https://myurl.no-ip.org /app/service-worker.js

我有一个问题,我总是得到一个

InvalidAccessError

当在service-worker.js中调用clients.openWindow('/')或clients.openWindow(' https://myurl.no-ip.org/app/index.html ')时,我收到错误:

{code: …
Run Code Online (Sandbox Code Playgroud)

google-chrome service-worker

13
推荐指数
1
解决办法
7237
查看次数

navigator.serviceWorker.controller始终为null

我有一个问题,在注册serviceWorker后,navigator.serviceWorker.controller始终为null.我从不做强制刷新,只刷新页面.我用谷歌浏览器42.0.2311.152米(32位)测试它.

var currentServiceWorker = null;
navigator.serviceWorker.register(SERVICE_WORKER_URL).then(function(serviceWorkerRegistration { 
  if (navigator.serviceWorker.controller) {
    currentServiceWorker = navigator.serviceWorker.controller;
  } else {
    currentServiceWorker = serviceWorkerRegistration.active;
  }
});
Run Code Online (Sandbox Code Playgroud)

根据这个:

ServiceWorkerContainer接口的控制器只读属性在其状态被激活时返回ServiceWorker对象(ServiceWorkerRegistration.active返回的同一对象).如果请求是强制刷新(Shift +刷新)或者没有活动工作程序,则此属性返回null.(来源:https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/controller)

navigator.serviceWorker.controller应该返回相同的对象serviceWorkerRegistration.active.但是,.active我得到了积极的工作者,.controller没有.

你对这种情况有什么想法吗?

谢谢你,安迪

google-chrome service-worker

12
推荐指数
2
解决办法
4380
查看次数

Cucumber类扩展步骤定义和钩子

我想从java中的"AbstractBase_step"类扩展.所以我想要一个像这样的钩子:

public abstract class AbstractBase_Steps {
    protected Scenario scenario;
    @Before
    public void background(Scenario scenario) {
        this.scenario = scenario;
    }
}
Run Code Online (Sandbox Code Playgroud)

为每个步骤文件调用:

public abstract class Hello_Steps extends AbstractBase_Steps {
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到了

cucumber.runtime.CucumberException:不允许扩展定义步骤定义或挂钩的类.类Hello_Steps扩展了类AbstractBase_Steps

有人有诀窍吗?

编辑:为了重用相同的步骤定义,我创建了一个新的类Common_Steps并将其包含在粘合路径中.因此,它的定义可用于测试中的所有要素文件.

java hook extend cucumber

8
推荐指数
2
解决办法
1万
查看次数

Chrome ServiceWorker postMessage


我尝试在WebApp和相应的ServiceWorker之间postMessage.serviceWoker已成功注册并正常工作.
不幸的是我发现了一些奇怪的行为:
1.navigator.serviceWorker.controller始终为null.
2.在serviceWorker端,我以这种方式实现了postMessage:

self.addEventListener('message', function (evt) {
console.log('postMessage received', evt);
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,发回原始evt.origin =""和evt.source = null的重要字段不包含所需的值.但我总是收到发送的evt.data.

你知道怎么回帖吗?

非常感谢你!
和我

message google-chrome postmessage service-worker

7
推荐指数
3
解决办法
8633
查看次数

使用node.js验证html代码

我想验证node.js应用程序中的一些HTML文档.我已经找到了一些像w3cjs和w3c-validate这样的node.js模块,但似乎它们只是在线工作.因为我必须检查许多小的HTML文档,所以我正在寻找一种离线工作的解决方案,没有互联网.

您知道如何在节点应用程序中集成W3C标记验证器吗?或者检查HTML语法的其他方法是什么?也许像DOM解析器?

html validation w3c-validation node.js

5
推荐指数
0
解决办法
1902
查看次数