小编dco*_*296的帖子

用Celery取消已执行的任务?

我一直在阅读文档和搜索,但似乎无法找到一个直接的答案:

你能取消已经执行的任务吗?(在任务开始时,需要一段时间,需要取消一半)

我在Celery FAQ的文档中找到了这个

>>> result = add.apply_async(args=[2, 2], countdown=120)
>>> result.revoke()
Run Code Online (Sandbox Code Playgroud)

但我不清楚这是否会取消排队的任务,或者它是否会杀死一个正在运行的进程.感谢您可以放下任何光线!

python django message-passing celery

84
推荐指数
6
解决办法
7万
查看次数

FFMPEG 2视频转码并在1帧中并排?

我有2个视频:HEADSHOT.MOV和SCREEN.MOV.它们都是大文件,我希望缩小(大小,比特率​​等)并将这两个并排放置在同一个非常宽的视频帧中.最终的结果是,当您播放output_video.mp4时,您将拥有一个非常宽的帧,两个视频同步并以相同的速率播放.

这是我想要做的合成不正确的版本:

ffmpeg -i HEADSHOT.MOV -t 00:02:00 -acodec libfaac -ab 64k -vcodec libx264 -r 30 -pass 1 -s 374x210 -vf "movie=SCREEN.MOV [small]; [in][small] -an -r 30 -pass 1 -s 374x210 overlay=10:10 -t 00:02:00 [out]" -threads 0 output_movie.mp4
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我也尝试将测试电影的持续时间设置为2分钟,这引出了另一个问题:处理2部不同长度的电影的最佳方式是什么(如果它们很接近)?

到目前为止我发现有用的资源是:

多个视频源合并为一个

http://ffmpeg.org/ffmpeg.html#overlay-1

非常感谢任何帮助/建议.我在使用FFMPEG语法时遇到问题!谢谢!

video transcode ffmpeg

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

django celery终止任务的子进程

这是我上一个问题的后续问题: 用Celery取消已执行的任务?

celery.task.control.revoke({task_id}, terminate=True) 
Run Code Online (Sandbox Code Playgroud)

确实会杀死我的工作人员.我现在遇到的问题是我的任务正在运行子任务,当任务被撤销时,子进程不会死亡.

dmarkey的这篇文章 http://dmarkey.com/wordpress/2011/09/07/killing-child-processes-of-celery-tasks-on-a-timeout/ 是我见过的最接近我想要的东西做,除了我不想在超时时杀死,而是当我用task_id撤销()时.

似乎我所拥有的只是(String)task_id,无论如何都要杀死这些子进程?感谢您的帮助 - 我没有像我想的那样有这么多的经验,浏览文档是一个挑战!

python django subprocess task celery

5
推荐指数
1
解决办法
1669
查看次数

如何检查字符串是否以php中的标点符号结尾?

我逐行解析一些文本,如果给定的行以任何标点符号或数字结尾,我希望布尔值返回true.

正则表达式是最好的方法还是应该迭代一组字符来匹配?阵列的感觉会太大而且成本太高......

如果这确实是一个好方法,有人可以帮助我使用正则表达式吗?

function ends_with_punctuation_or_num($string){
   // check if the string ends with punctuation or a number
    if (/* TODO */)
        return true;
    else
        return false;
}
Run Code Online (Sandbox Code Playgroud)

php regex

5
推荐指数
2
解决办法
4886
查看次数

使用Wowza 3.5在Amazon CloudFront中缓存HLS/HDS流

我正在努力快速学习HDS和HLS实时流媒体背后的一些基础技术.

我在EC2中的Amazon WebServices实例上设置了Wowza Media服务器3.5,并通过CloudFront分发.我做了我的第一次直播活动,并且正在观察我的服务器负载越来越高.我想知道是否有人可以帮助我理解HDS/HLS直播(和nDVR ......)的一些基础:

  • Wowza是我的cloudfront发行版的原始服务器
  • HDS清单文件设置为在CF中缓存2秒(TTL时间)
  • 我检查了所有击中我的Wowza实例的IP,它们实际上是CF缓存位置或边缘服务器
  • (假设)由于所有HDS流量都超过端口80,所有视频内容最终都被缓存在边缘位置(尽管持续2秒)

这就是我的问题所在:如何为视频内容提供数据(这是我的理解,请让我直截了当!): - 当观众请求播放列表或主播文件时,他们会获得XML,将播放器指向一大块视频/ audio(DVR应用程序实例中的m4fa和m4fv?)接下来需要播放的数据.由于此数据也通过端口80传递,因此它也被缓存.

如果以上陈述是正确的,那么对于HDS和HLS的优化,以下内容是否有意义:

案例1:DVR服务:我在CloudFront中设置缓存规则,如下所示:

  • 以"f4m","m3u8"和"?DVR"结尾的任何内容,缓存2秒(播放列表/清单文件)
  • 其他一切的默认值应该缓存更长时间(可能是一小时,或24小时......?)这样,DVR数据仍然被缓存,但播放列表每2秒更新一次

案例2:没有DVR服务(这是更好的优化方式吗?)

  • 我怀疑我们可以通过一起杀死DVR服务来优化服务器负载,这样通过CF分发的所有数据都只是最新的音频/视频数据包 - 因此所有观众都应该请求相同的播放列表和数据文件,因此大量的人请求这些文件没什么大不了的,因为我的服务器每两秒钟就会从每个边缘位置被点击以更新清单文件.
  • 如果这样的媒体文件块被给予更长的缓存时间,那么如果媒体仍然被缓存,我们是否杀死了DVR服务是否重要?

感谢您提供的任何见解!

amazon-web-services live-streaming http-live-streaming wowza amazon-cloudfront

5
推荐指数
1
解决办法
3877
查看次数

Mongoose document.populate() 不起作用

我正在使用一个非常简单的 Node/Mongo/Express 设置,并尝试填充引用的文档。考虑我的“课程”模式,其中包含“周”:

// define the schema for our user model
var courseSchema = mongoose.Schema({

    teachers        : { type: [String], required: true  },
    description     : { type: String              },
    previous_course : { type: Schema.Types.ObjectId, ref: 'Course'},
    next_course     : { type: Schema.Types.ObjectId, ref: 'Course'},
    weeks           : { type: [Schema.Types.ObjectId], ref: 'Week'},
    title           : { type: String              }

});

// create the model for Course and expose it to our app
module.exports = mongoose.model('Course', courseSchema);
Run Code Online (Sandbox Code Playgroud)

我特别想填充我的几周数组(尽管当我将模式更改为一周时,populate()仍然不起作用)。

这是我一周的计划(一门课程有多个):

var weekSchema = …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js mongoose-populate mongoose-schema

3
推荐指数
1
解决办法
8572
查看次数