小编dan*_*ast的帖子

xargs的最终参数

我想做类似的事情:

find . -type f | xargs cp dest_dir
Run Code Online (Sandbox Code Playgroud)

但是xargsdest_dir用作初始论证,而不是最终论证.我想知道:

  1. 是否可以指定最终参数xargs
  2. 任何其他替代方案可以达到相同的效果?

编辑

一个可能的,但繁琐的替代方案是:

find . -type f | while read f ; do echo cp $f dest_dir ; done
Run Code Online (Sandbox Code Playgroud)

我不喜欢这个,因为cp会启动几十个进程.

xargs

17
推荐指数
1
解决办法
3809
查看次数

更改unittest中的日志级别

我有一个印象(但没有找到它的文档)unittest WARNING 为所有记录器设置日志记录级别.我想要:

  • 能够从命令行(运行测试时)或测试模块本身指定所有记录器的日志记录级别
  • 避免unittest搞乱应用程序日志记录级别:运行测试时我希望获得与运行应用程序时相同的日志记录输出(相同级别)

我怎样才能做到这一点?

python logging python-unittest

17
推荐指数
2
解决办法
2365
查看次数

使用Fabric在后台输入命令在某些主机上不起作用

出于测试目的,我使用普通的ssh命令行工具运行以下命令:

ssh user@host "nohup sleep 100 >> /tmp/xxx 2>&1 < /dev/null &"
Run Code Online (Sandbox Code Playgroud)

这在我的所有主机中都按预期工作:在后台创建一个睡眠过程,并且ssh立即完成.

我正在尝试使用Fabric在python中实现此功能.我最后run打电话了.这是Fabric日志记录报告的内容:

[user@host] run: nohup sleep 100 >> /tmp/xxx 2>&1 < /dev/null &
Run Code Online (Sandbox Code Playgroud)

这正是我所期待的.但是,如果我检查在我的主机中运行的进程,sleep 100则不是其中之一.更糟糕的是:问题只发生在我的一些主机上.

我还添加了一些信息,通过添加"\necho $!"来显示已创建的进程.要由Fabric运行的命令.这是报道的内容:

[user@host] run: nohup sleep 100 >> /tmp/xxx 2>&1 < /dev/null &
echo $!
[user@host] out: 30935
Run Code Online (Sandbox Code Playgroud)

我没有关于如何调试它的想法,因为Fabric报告已经创建了该进程,但我发现没有进程在另一端运行.syslog报告正在打开和关闭ssh会话:

Dec  6 09:12:09 host sshd[2835]: Accepted publickey for user from 67.133.172.14 port 37732 ssh2
Dec  6 09:12:09 host sshd[2838]: pam_unix(sshd:session): session opened for user user by (uid=0)
Dec  6 09:12:10 …
Run Code Online (Sandbox Code Playgroud)

python ssh fabric

16
推荐指数
1
解决办法
6154
查看次数

jshint抱怨:'Ember'没有定义

我有一个标准Ember main.js文件,它像这样开始:

this.App = Ember.Application.create({
    LOG_TRANSITIONS: true,
    VERSION: '1.0.0',
    ready: function () {
        console.log('App version: ' + App.VERSION + ' is ready.');
    }
});
Run Code Online (Sandbox Code Playgroud)

运行此操作会jshint抱怨Ember未定义,在部署阶段,服务器中的此特定文件也是如此.因此,会显示许多错误消息.

Ember通过以下script标记在浏览器中可用index.html:

<script src="scripts/vendor/ember-1.0.0-rc.2.js"></script>
Run Code Online (Sandbox Code Playgroud)

我怎么能告诉jshint有关Ember

jshint ember.js

15
推荐指数
2
解决办法
7777
查看次数

Jenkins在作为docker容器运行时无法访问Internet

我正在运行jenkins docker图像.启动时,它抱怨无法访问互联网.

这是我运行它的方式:

docker pull jenkins
mkdir jenkins-shared-volume
docker run -d -p 49001:8080 -p 50000:50000 -v jenkins-shared-volume:/var/jenkins_home -t --name jenkins jenkins
Run Code Online (Sandbox Code Playgroud)

然后jenkins实例在http:// localhost:49001上运行.但它有连接问题:

离线此Jenkins实例似乎处于脱机状态.

有关在没有Internet连接的情况下安装Jenkins的信息,请参阅脱机Jenkins安装文档.

您可以选择继续配置代理或跳过插件安装.

在此输入图像描述

我的系统中没有代理(家用笔记本电脑).我想这可能是一个模糊的docker问题,但是:

  1. 我找不到任何关于这个问题的引用
  2. 由于这是人们运行jenkins docker图像的常用方式,因此我发现令人惊讶的是这不是开箱即用的

难道我做错了什么?

编辑

只是为了确保docker容器确实可以直接访问互联网:

docker exec -it jenkins /bin/bash
jenkins@4ef4944a7cb7:/$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=44 time=29.859 ms
Run Code Online (Sandbox Code Playgroud)

EDIT2

运行连接到host网络的容器解决了问题,让jenkins访问互联网:

docker run -d --net host -v jenkins-shared-volume:/var/jenkins_home -t --name jenkins jenkins
Run Code Online (Sandbox Code Playgroud)

但是我无法映射端口:jenkins可以在http:// localhost:8080上直接访问,这可能是其他服务使用8080端口时的冲突源.

proxy jenkins docker

15
推荐指数
1
解决办法
5711
查看次数

以编程方式创建新的postgres用户,无需交互式干预

我试图在脚本中执行此操作:

» sudo -u postgres createuser -PE -s user1
Enter password for new role:
Run Code Online (Sandbox Code Playgroud)

我不想postgres以交互方式请求密码,所以我想这样做:

» sudo -u postgres createuser -PE -s user1 < /tmp/xxx
Run Code Online (Sandbox Code Playgroud)

其中/tmp/xxx包含新用户的密码.但它不起作用.如何使这个工作?

postgresql

14
推荐指数
2
解决办法
3970
查看次数

如何在django中正确设置自定义handler404?

根据文档,这应该是相当简单的:我只需要定义handler404.目前我在做,在我的顶部urls.py:

urlpatterns = [
    ...
]

handler404 = 'myapp.views.handle_page_not_found'
Run Code Online (Sandbox Code Playgroud)

该应用程序已安装.相应的视图只是(目前我只想在404的情况下重定向到主页):

def handle_page_not_found(request):
    return redirect('homepage')
Run Code Online (Sandbox Code Playgroud)

但这没有效果:显示标准(调试)404页面.

文档有点含糊不清:

  • 应该handler404在哪里定义?文件说URLconf但是,究竟在哪里?我有几个应用程序,每个都有不同的urls.py.我能把它放进去吗?在顶部URLconf?为什么?这记录在哪里?
  • 这个处理程序会捕获什么?它可以捉住django.http.Http404, django.http.HttpResponseNotFound,django.http.HttpResponse(用status=404)?

django http-status-code-404

14
推荐指数
4
解决办法
4236
查看次数

无法使用urllib2将content-type设置为application/json

这个小宝贝:

import urllib2
import simplejson as json

opener = urllib2.build_opener()
opener.addheaders.append(('Content-Type', 'application/json'))
response = opener.open('http://localhost:8000',json.dumps({'a': 'b'}))
Run Code Online (Sandbox Code Playgroud)

产生以下请求(如ngrep所示):

sudo ngrep -q -d lo '^POST .* localhost:8000'

T 127.0.0.1:51668 -> 127.0.0.1:8000 [AP]
  POST / HTTP/1.1..Accept-Encoding: identity..Content-Length: 10..Host: localhost:8000..Content-Type: application/x-www-form-urlencoded..Connection: close..User-Agent:
   Python-urllib/2.7....{"a": "b"} 
Run Code Online (Sandbox Code Playgroud)

我不希望这样Content-Type: application/x-www-form-urlencoded.我明确地说我想要('Content-Type', 'application/json')

这里发生了什么?!

python post json urllib2

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

Django重定向http - > https

我在跑步:

python manage.py runserver localhost:44100
Run Code Online (Sandbox Code Playgroud)

这会将我重定向到https:

» http http://localhost:44100/
HTTP/1.0 301 Moved Permanently
Content-Type: text/html; charset=utf-8
Date: Mon, 05 Mar 2018 14:09:09 GMT
Location: https://localhost:44100/
Server: WSGIServer/0.1 Python/2.7.14
X-Frame-Options: SAMEORIGIN
Run Code Online (Sandbox Code Playgroud)

为什么/如何发生这种情况?什么设置控制是否Django接受http/ https

python django https redirect http

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

在可浏览的api_root中混合View和ViewSet

我有一个可浏览的API:

restaurant_router = DefaultRouter()
restaurant_router.register(r'rooms', RoomsViewSet)
restaurant_router.register(r'printers', PrintersViewSet)
restaurant_router.register(r'shifts', ShiftsViewSet)

urlpatterns = patterns('',
    url(r'^$', api_root),
    url(r'^restaurant/$',
        RestaurantView.as_view(),
        name='api_restaurants_restaurant'),
    url(r'^restaurant/', include(restaurant_router.urls)),
)
Run Code Online (Sandbox Code Playgroud)

api_root我可以链接到命名路线:

@api_view(('GET',))
def api_root(request, format=None):
    return Response({
        'restaurant': reverse('api_restaurants_restaurant', request=request, format=format),
    })
Run Code Online (Sandbox Code Playgroud)

或者我可以使用由生成的可浏览API DefaultRouter,如文档中所述:

我们正在使用的DefaultRouter类也会自动为我们创建API根视图,因此我们现在可以从views模块中删除api_root方法.

如果我想混合ViewSets和普通视图,并在同一个API根目录中显示所有内容,该怎么办?该DefaultRouter只列出ViewSet它控制秒.

python django django-rest-framework

12
推荐指数
1
解决办法
452
查看次数