在Windows上使用Python 3.4.1,我发现在执行asyncio事件循环时,我的程序不能被中断(即在终端中按Ctrl + C).更重要的是,SIGINT信号被忽略.相反,我已经确定在不在事件循环中时处理SIGINT.
为什么执行asyncio事件循环时会忽略SIGINT?
下面的程序应该演示问题 - 在终端中运行它并尝试通过按Ctrl + C来停止它,它应该继续运行:
import asyncio
import signal
# Never gets called after entering event loop
def handler(*args):
print('Signaled')
signal.signal(signal.SIGINT, handler)
print('Event loop starting')
loop = asyncio.SelectorEventLoop()
asyncio.set_event_loop(loop)
loop.run_forever()
print('Event loop ended')
Run Code Online (Sandbox Code Playgroud)
请参阅官方(郁金香)邮件列表上的讨论.
我想通过kubectl代理服务器访问我的Grafana Kubernetes服务,但由于某种原因,即使我可以使其适用于其他服务,它也无法工作.鉴于以下服务定义,为什么它不能在http:// localhost:8001/api/v1/proxy/namespaces/monitoring/services/grafana上找到?
apiVersion: v1
kind: Service
metadata:
namespace: monitoring
name: grafana
labels:
app: grafana
spec:
type: NodePort
ports:
- name: web
port: 3000
protocol: TCP
nodePort: 30902
selector:
app: grafana
Run Code Online (Sandbox Code Playgroud)
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
namespace: monitoring
name: grafana
spec:
replicas: 1
template:
metadata:
labels:
app: grafana
spec:
containers:
- name: grafana
image: grafana/grafana:4.1.1
env:
- name: GF_AUTH_BASIC_ENABLED
value: "true"
- name: GF_AUTH_ANONYMOUS_ENABLED
value: "true"
- name: GF_SECURITY_ADMIN_USER
valueFrom:
secretKeyRef:
name: grafana-credentials
key: …Run Code Online (Sandbox Code Playgroud) 我有一个基于Java的Windows应用程序,我想用Java捆绑安装.安装框架是NSIS.应该保证应用程序可执行文件调用捆绑的Java,因此不会与系统中安装的其他Java发生冲突.
实现目标的最佳方法是什么?我之前没有尝试解决这类问题,并且对Java几乎没有经验,所以我不知道那里有哪些解决方案.如果可行的话,我想我更喜欢将Java嵌入到应用程序的可执行文件中,否则我猜Java可以与它一起安装(可执行文件指向Java).
编辑: 此项目已通过NSIS生成可执行文件(.exe).可执行文件默认使用系统Java,但显然它更喜欢同一目录中的JRE(即捆绑)(如果存在).
编辑2:让我想用这个应用程序捆绑Java的场景是我收到了一个用32位Java构建的可执行文件,它在我的64位Java系统上失败了(静默).
我通过"Add Fakes Assembly"参考上下文菜单选项将一个Fakes程序集添加到Visual Studio 2012 C#单元测试项目中.什么是完全删除Fakes程序集的过程,即撤消我将其添加到项目中的过程?
我想知道的是如何断言异步方法在C#单元测试中抛出异常?我能够Microsoft.VisualStudio.TestTools.UnitTesting在Visual Studio 2012中编写异步单元测试,但还没有弄清楚如何测试异常.我知道xUnit.net也以这种方式支持异步测试方法,尽管我还没有尝试过这个框架.
以我的意思为例,以下代码定义了被测系统:
using System;
using System.Threading.Tasks;
public class AsyncClass
{
public AsyncClass() { }
public Task<int> GetIntAsync()
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
此代码段定义了一个测试TestGetIntAsync对AsyncClass.GetIntAsync.这是我需要输入如何完成GetIntAsync抛出异常的断言的地方:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Threading.Tasks;
[TestClass]
public class TestAsyncClass
{
[TestMethod]
public async Task TestGetIntAsync()
{
var obj = new AsyncClass();
// How do I assert that an exception is thrown?
var rslt = await obj.GetIntAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
如果需要,可以随意使用一些其他相关的单元测试框架,而不是Visual Studio,如xUnit.net,或者你会认为这是一个更好的选择.
当在IE 8中抛出JavaScript异常时,如何查看其堆栈跟踪?
例如,jQuery中的以下代码捕获异常并重新抛出它.在Visual Studio(2012)中进行调试时,执行会在jQuery捕获异常('e')时中断,但我不能在生命中看到异常源自的堆栈跟踪:
// resolve with given context and args
resolveWith: function( context, args ) {
if ( !cancelled && !fired && !firing ) {
firing = 1;
try {
while( callbacks[ 0 ] ) {
callbacks.shift().apply( context, args );
}
}
// We have to add a catch block for
// IE prior to 8 or else the finally
// block will never get executed
catch (e) {
throw e;
}
finally {
fired = [ context, args …Run Code Online (Sandbox Code Playgroud) javascript debugging exception stack-trace internet-explorer-8
我看到,与标准cloud-config文件不同,runcmdCoreOS cloud-config文件中没有选项.目前,我通过向我添加以下内容来启用CoreOS机器上的交换cloud-config:
units:
- name: swap.service
command: start
content: |
[Unit]
Description=Turn on swap
[Service]
Type=oneshot
Environment="SWAPFILE=/1GiB.swap"
RemainAfterExit=true
ExecStartPre=/usr/sbin/losetup -f ${SWAPFILE}
ExecStart=/usr/bin/sh -c "/sbin/swapon $(/usr/sbin/losetup -j ${SWAPFILE} | /usr/bin/cut -d : -f 1)"
ExecStop=/usr/bin/sh -c "/sbin/swapoff $(/usr/sbin/losetup -j ${SWAPFILE} | /usr/bin/cut -d : -f 1)"
ExecStopPost=/usr/bin/sh -c "/usr/sbin/losetup -d $(/usr/sbin/losetup -j ${SWAPFILE} | /usr/bin/cut -d : -f 1)"
[Install]
WantedBy=local.target
Run Code Online (Sandbox Code Playgroud)
然后在初始化我的CoreOS映像后,我必须ssh进入机器并运行:
sudo fallocate -l 1024m /1GiB.swap && sudo chmod 600 /1GiB.swap \
&& …Run Code Online (Sandbox Code Playgroud) 我是jQuery的新手,我想简化它无法找到的元素的处理,这是一个相当常见的问题.以下代码显示了我的意思:
var category = $('select#Category');
Run Code Online (Sandbox Code Playgroud)
现在,我可以检查返回的变量以查看是否找不到它,但我肯定更喜欢在这种情况下自动抛出异常.这有可能与jQuery一起使用吗?如果没有,是否有一些常见的习惯用于在jQuery之上实现这样的自动错误检查?
我为NLog配置了一个文件目标,如下所示:
<targets>
<target name="asyncFile" xsi:type="AsyncWrapper">
<target xsi:type="File" name="logfile" fileName="${basedir}/Logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
</target>
</targets>
Run Code Online (Sandbox Code Playgroud)
如何通过NLog的API 查询fileName该File目标的实际文件系统路径()?
使用jshint装载机用的WebPack,我怎么做webpack时JSHint发出警告命令失败?
如果linting检测到问题,我希望CI构建失败.
目前,我只是将Webpack配置为在预加载JS文件时运行jshint-loader:
// webpack.config.js
module.exports = {
module: {
preLoaders: [
{
test: /\.js/,
exclude: /node_modules/,
loader: 'jshint-loader',
},
],
},
};
Run Code Online (Sandbox Code Playgroud) exception ×3
c# ×2
javascript ×2
unit-testing ×2
windows ×2
.net ×1
.net-4.5 ×1
async-await ×1
coreos ×1
debugging ×1
event-loop ×1
installation ×1
java ×1
jquery ×1
jshint ×1
kubectl ×1
kubernetes ×1
nlog ×1
proxy ×1
python-3.4 ×1
signals ×1
stack-trace ×1
swapfile ×1
systemd ×1
undefined ×1
webpack ×1