另请参阅此相关问题,它有最新答案:https://stackoverflow.com/a/28262104/7918.
如何推送并自动更新我的非裸远程git存储库的工作副本?
在git之前,人们会说"这是不安全的",请让我解释为什么在我的情况下这会起作用.我有储存库foo在机器A和B.A碰巧是我的本地机器,B在超级计算网格上.项目通常是在A(通过一些测试)开发的,然后推送到B更多测试并向网格提交作业.两个存储库都有工作目录.库上都A和B是私有并且连接到我的用户帐户.
现在git flow就是这样的:
A ABB我宁愿省略第3步和第4步.那就是:我希望在推送时更新远程非裸存储库,如果更改A可以自动安全地合并(即:当合并是快进时,工作目录)在B干净).
第一个解决方案是删除存储库B并仅用于rsync同步代码,但这是不可取的,因为有时我会直接进行一些更改B,并且不希望轻易覆盖这些更改.
第二个灵魂就是安装这个补丁,它甚至被合并到mysysgit(但不是git).此补丁updateInstead为receive.denyCurrentBranchgit选项增加了价值.这是可行的,但我宁愿不在许多机器上修补git.
第三种解决方案(从这里取)将涉及有三个Git仓库:A,B',B.哪里B'是裸的,并使用钩子来同步A和B.这非常简单,但我猜有三个存储库可能会增加整个系统的脆弱性.
最后的解决方案将是优先的:即使用存储库B上的钩子自动将推送的更改合并到工作副本.每个人都说这样做是直截了当的,但我想我对git内部的了解是为了修补一些合理的东西.我在这方面做了一些工作,但没有任何实际工作.
我在找什么:
基本上我有很多任务(大约1000个批次),这些任务的执行时间可以有很大的不同(从不到几秒到10分钟).我知道如果一项任务执行超过一分钟我就可以杀死它.这些任务是优化某些数据挖掘模型的步骤(但彼此独立),并且大部分时间都在一些C扩展函数中,因此如果我试图优雅地杀死它们,它们就不会合作.
是否存在适合该模式的分布式任务队列--- AFAIK:celery允许中止愿意合作的任务.但我可能错了.
我最近在多线程环境中询问了关于在Python中杀死挂起函数的类似问题.
我想我可以将celery任务子类化,因此它会生成一个新进程,然后执行其有效负载,如果需要很长时间就会中止它的执行,但之后我会被初始化新解释器的开销所杀死.
我使用celery来启动看起来像这样的任务集:
我将这些任务的结果汇总到单个答案中,然后用这个答案做一些事情---比如存储到数据库,保存到特殊结果文件等等.基本上在完成任务后我必须调用具有以下签名的函数:
def callback(result_file_name, task_result_list):
#store in file
def callback(entity_key, task_result_list):
#store in db
Run Code Online (Sandbox Code Playgroud)现在步骤1.在Celery队列中完成,步骤2在芹菜外部完成:
tasks = []
# add taksks to tasks list
task_group = group()
task_group.tasks = tasks
result = task_group.apply_async()
res = result.join()
# Aggregate results
# Save results to file, database whatever
Run Code Online (Sandbox Code Playgroud)
这种方法很麻烦,因为我必须停止一个线程,直到执行所有任务(可能需要几个小时).
我想以某种方式将步骤2转移到芹菜上 - 基本上我需要为整个任务集添加一个回调(据我所知,它在Celery中不受支持)或提交在所有这些子任务之后执行的任务.
有谁知道怎么做?我在django环境中使用它,所以我可以在数据库中存储一些状态.
我不能直接使用和弦,因为和弦使我能够创建这样的回调:
def callback(task_result_list):
#store in file
Run Code Online (Sandbox Code Playgroud)
没有明显的方法可以将其他参数传递给回调(特别是因为这些回调不能是本地函数).
我可以使用存储结果,TaskSetMeta但是这个实体没有状态字段---所以即使我要向TaskSetMeta添加信号,我也必须汇集任务结果,这可能会产生巨大的开销.
我想在matplotlib图上的一个方框中放一个文本,但是文档只提供了如何将它放在右上角的示例(并且选择不同的角落并不是很简单).
我使用DataFrame带有分层索引的熊猫,在一种特殊情况下,它由浮点值索引。
这是示例:
example_data = [
{'a': 1.2, 'b':30, 'v':123},
{'a': 1.2, 'b':60, 'v':1234},
{'a': 3, 'b':30, 'v':12345},
{'a': 3, 'b':60, 'v':123456},
]
frame = pd.DataFrame(example_data)
frame.set_index(['a', 'b'])
Run Code Online (Sandbox Code Playgroud)
现在我想使用部分索引来选择框架,a==1.2然后显示它。文档显示了如何对字符串索引执行此操作,但这种方法显然不适用于浮点数,与我是否尝试frame.loc[1.2]得到关于 1.2 不正确的错误无关,Int64Index这显然是正确的,因为我使用浮点数进行索引。
有没有办法在熊猫中使用浮点索引?如何修复我的分层索引?
实际错误消息是:
TypeError: the label [1.2] is not a proper indexer for this index type (Int64Index)
Run Code Online (Sandbox Code Playgroud) 我正在做一些原型设计,我正在使用three.js(版本68)在3D中显示一些数据.整个动画的期望结果将是一堆彩色球(代表根据某些模式着色的质子和中子).一切都很好,但由于我不知道的原因渲染结果是像素化的.
当前版本基本上看起来像(这个图像是~400px宽):
我检查了所有明显的事情:传递错误的分辨率,浏览器缩放等等.
这里还有代码的重要部分:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<script src="js/jquery.js"></script>
<script src="js/coffee-script.js"></script>
<script src="js/three.js"></script>
<script src="js/OrbitControls.js"></script>
<script src="js/animtest/load_event.js"></script>
<style>canvas { width: 100%; height: 100% }</style>
<title></title>
</head>
<body>
<div id="animation"
style="width: 1024px; height: 768px; ">
</div>
<script>
$(function(){
ctrl = new AnimController("#animation");
ctrl.set_up_scene();
ctrl.render();
ctrl.display_frame(4);
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是加载动画的coffeescript代码:
class AnimController
...
set_up_scene: () ->
@scene = new THREE.Scene()
el = $(@element_name)
@camera = new THREE.PerspectiveCamera(45
el.width()/el.height(), …Run Code Online (Sandbox Code Playgroud) 我的应用程序使用Django非rel.我无法访问模型.
我的bulkloader.yaml文件是自动生成的appcfg.py create_bulkloader_config.
问题是实体数字ID被导入为字符串键名.因此,如果我导出具有int ID的实体,例如'62',它将作为实体导入,其字符串键名为'61',这会搞砸Django.
Revelant bulkloader.yaml片段:
property_map:
- property: __key__
external_name: key
export_transform: transform.key_id_or_name_as_string
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用bulkloader设置下载/上传od数据,我希望数据具有易于理解的格式(如.csv)---因此使用bulkloader.py --dump (...)不是一个可行的选项,因为它给了我带有实体内容的sqlite3文件腌成一排.
我尝试做@Nick建议的事情,我得到了一个例外:
ErrorOnTransform: Numeric keys are not supported on input at this time.
Run Code Online (Sandbox Code Playgroud)
这是否意味着我必须坚持bulkloader.py(使用那个werid sqlite格式)或者我搞砸了什么?;)
变压器的标题:
- kind: auth_user
connector: csv
connector_options:
encoding: utf-8
skip_import_header_row: True
print_export_header_row: True
property_map:
- property: __key__
external_name: key
export_transform: transform.key_id_or_name_as_string
import_transform: transform.create_foreign_key('auth_user', key_is_id=True)
Run Code Online (Sandbox Code Playgroud)
整个Stacktrace:
Traceback (most recent call last):
File "/opt/google/appengine/google/appengine/tools/adaptive_thread_pool.py", line 150, in …Run Code Online (Sandbox Code Playgroud) 所以我对Python非常环保,并试图通过复制我编写的一些matlab代码来学习.我有一个部分,在matlab中,我加载了一个制表符分隔的数据文件.语法
x = load(data.txt)
Run Code Online (Sandbox Code Playgroud)
获取制表符分隔的数据并将其放入标记为x的矩阵的单元格中.
有没有办法在python中执行此操作,但使用逗号分隔的数据?
我已经使用 NGIX 和 django 配置了 uWSGI。
Uwsgi 失败并显示消息:
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named encodings
Run Code Online (Sandbox Code Playgroud) 我已经安装在虚拟enviorment全新的IPython,之后,我试图通过创建配置文件:ipython profile create但是ipython_notebook_config.py没有创建,而ipython_config.py和ipython_nbconvert_config.py被创造.
我该怎么做才能创建这个文件?
python ×6
django ×3
celery ×2
bulkloader ×1
csv ×1
djcelery ×1
file-io ×1
git ×1
ipython ×1
javascript ×1
matplotlib ×1
numpy ×1
pandas ×1
task-queue ×1
three.js ×1
uwsgi ×1
webgl ×1