在bash中,mplayer和imagemagick的"convert"等可执行文件在其命令行参数上具有很酷的自动完成功能.例如,如果我输入
mplayer <tab><tab>
Run Code Online (Sandbox Code Playgroud)
在我的一个视频文件夹中,然后mplayer将列出位于该文件夹中的所有媒体文件,并且仅列出媒体文件.
同样,如果我输入
convert -<tab><tab>
Run Code Online (Sandbox Code Playgroud)
然后我将看到转换脚本的所有可能选项,这很棒.
我的问题是如何使用bash,ruby或python脚本实现类似的功能?
检查当前运行的Celery任务会发现一个奇怪的time_start时间戳:
>> celery.app.control.inspect().active()
{u'celery@worker.hostname': [{u'acknowledged': True,
u'args': u'(...,)',
u'delivery_info': {u'exchange': u'celery',
u'priority': 0,
u'redelivered': None,
u'routing_key': u'celery'},
u'hostname': u'celery@worker.hostname',
u'id': u'3d92fdfd-524e-4ba1-98cb-cf83af2ad8e9',
u'kwargs': u'{}',
u'name': u'task_name',
u'time_start': 9636801.218162088,
u'worker_pid': 7931}]}
Run Code Online (Sandbox Code Playgroud)
该time_start属性将任务追溯到1970年(那是在创建Celery,Python之前,我没有自定义的DeLorean):
>> from datetime import datetime
>> datetime.fromtimestamp(9636801.218162088)
datetime.datetime(1970, 4, 22, 13, 53, 21, 218162)
Run Code Online (Sandbox Code Playgroud)
我是否误解了这个time_task属性?我的Celery应用程序配置错误了吗?
我在Linux上使用带有Django应用程序和Redis后端的Celery 3.1.4.
任务由执行的工作程序运行,如下所示:
./manage.py celery worker --loglevel=INFO --soft-time-limit=600 --logfile=/tmp/w1.log --pidfile=/tmp/w1.pid -n 'w1.%%h'
Run Code Online (Sandbox Code Playgroud) 我正在为自己的目的开发一个非常基本的DNS服务器.我理解它的方式,DNS服务器接收包含所请求域名的UDP数据包,并以某种标准格式返回相应的IP.
有一个标准库用于从/向二进制格式读/写UDP数据包.但是,在哪里可以找到用于序列化/反序列化DNS请求/响应的C#库?
我为docker-compose 3创建了一个使用许多环境变量的服务:
version: "3"
services:
myservice:
build:
context: ./myservice
command: ./something
environment:
VAR1: "val1"
VAR2: "val2"
VAR3: "val3"
Run Code Online (Sandbox Code Playgroud)
现在我想添加一个使用相同环境变量值的服务,除了VAL1,并且具有不同的命令:
myotherservice:
build:
context: ./myservice
command: ./somethingelse
environment:
VAR1: "val1-bis"
VAR2: "val2"
VAR3: "val3"
Run Code Online (Sandbox Code Playgroud)
有没有办法避免docker-compose.yml文件中的环境变量重复?在docker-compose 2中,可以使用extends关键字,但在docker-compose 3中不再是这种情况.
编辑:2017年10月,扩展字段被添加到docker-compose 3.4语法:https://docs.docker.com/compose/compose-file/#extension-fields这是正确的方法:
version: "3"
x-env:
&default-env
VAR1: "val1"
VAR2: "val2"
VAR3: "val3"
services:
myservice:
build:
context: ./myservice
command: ./something
environment: *default-env
myotherservice:
build:
context: ./myservice
command: ./somethingelse
environment:
<< : *default-env
VAR1: "val1-bis"
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Phusion Passenger在Apache2服务器上部署Rails应用程序.虽然一切都在本地运行良好,但我在部署时遇到臭名昭着的"Bundler :: GemNotFound"错误:
Could not find abstract-1.0.0 in any of the sources (Bundler::GemNotFound)
Run Code Online (Sandbox Code Playgroud)
我的所有宝石都安装在我的本地主文件夹中.因此,我的Apache2配置文件中的乘客配置行如下:
LoadModule passenger_module /home/regis/.gem/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /home/regis/.gem/gems/passenger-3.0.7
PassengerRuby /usr/bin/ruby1.8
Run Code Online (Sandbox Code Playgroud)
我知道您需要更多信息来分析手头的问题,但我不知道如何进一步诊断这个问题.
Fugitive.vim允许我运行git grep命令; 不幸的是,结果没有存储在quickfix-list中,所以我需要:cw在a之后运行:Ggrep才能拥有一个易于解析的结果列表.
我想键入:Ggr "def my_function"而不是:
:Ggrep "def my_function"
:cw
Run Code Online (Sandbox Code Playgroud)
如何:Ggr在.vimrc文件中定义此命令?
编辑
一旦:Ggr定义了命令,我就可以映射到git grep光标下的单词,这真的很棒:
nnoremap <C-F> :Ggr <cword><CR>
Run Code Online (Sandbox Code Playgroud) 我想为Django模型的实例添加自定义属性.这些属性不应存储在数据库中.在任何其他类中,属性将仅由__init__方法初始化.
我已经可以看到三种不同的方法,而且没有一种方法是完全令人满意的.我想知道是否有更好/更多的pythonic/djangoist方法呢?
覆盖的__init__方法:语法是有点令人费解,但它的作品.
from django.db.models import Model
class Foo(Model):
def __init__(self, *args, **kwargs):
super(Model, self).__init__(*args, **kwargs)
self.bar = 1
Run Code Online (Sandbox Code Playgroud)使用Django post_init信号:这需要类定义之外的类代码,这是不可读的.
from django.dispatch import receiver
from django.db.models.signals import post_init
@receiver(post_init, sender=Foo)
def user_init(sender, instance, *args, **kwargs):
instance.bar = 1
Run Code Online (Sandbox Code Playgroud)使用实例方法而不是属性:引发一般异常,因为默认行为有点令人不安.
class Foo(Model):
def bar(self):
try:
return self.bar
except:
self.bar = 1
return self.bar
Run Code Online (Sandbox Code Playgroud)在这三个选择中,第一个看起来对我来说是最差的.你怎么看?还有其他选择
我想将一些包含标点符号和全角符号的文本转换为纯中文文本.
maybe_re = re.compile("xxxxxxxxxxxxxxxxx") #TODO
print "".join(maybe_re.findall("??,?????????.??????"))
# I want out
?????????????
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用clang(3.0)构建和链接基于C++,cmake的项目.此项目链接到安装在自定义目录/ my/dir /中的多个库.该目录包含在LD_LIBRARY_PATH和LIBRARY_PATH环境变量中.项目使用g ++构建和链接.
由cmake生成并执行的链接命令如下所示:
/usr/bin/clang++ -O3 stuff.cpp.o -o stuff -rdynamic -lmylib
Run Code Online (Sandbox Code Playgroud)
ld然后抱怨以下消息:
/usr/bin/ld: cannot find -lmylib
Run Code Online (Sandbox Code Playgroud)
每当我手动添加时,上面的链接命令运行正常-L/my/dir/.有没有指定-L标志链接的方法?
我正在使用运算符运行 mongodbfind查询$in:
collection.find({name: {$in: [name1, name2, ...]}})
Run Code Online (Sandbox Code Playgroud)
我希望结果按照与我的名称 array: 相同的顺序排序[name1, name2, ...]。我该如何实现这一目标?
注意:我通过 pymongo 访问 MongoDb,但我认为这并不重要。
编辑:由于不可能在 MongoDb 中本地实现这一点,所以我最终使用了典型的 Python 解决方案:
names = [name1, name2, ...]
results = list(collection.find({"name": {"$in": names}}))
results.sort(key=lambda x: names.index(x["name"]))
Run Code Online (Sandbox Code Playgroud)