我感兴趣的是定期按时间间隔运行某些操作.显然,这是cron的任务,对吧?
不幸的是,互联网似乎在那里存在一些分歧.
让我详细说明一下我的设置.首先,我的开发环境是在Windows中,而我的生产环境是在Webfaction(Linux)上托管的.Windows上没有真正的cron,对吧?另外,我使用Django!还有什么建议Django?
芹菜当然!不幸的是,设置Celery对我来说或多或少是一个字面上的噩梦 - 请参阅错误信息'使用Celery可以找到记录器"多处理"的处理程序.这只是我和Celery一起遇到的问题之一.其他包括套接字错误,我是唯一一个遇到问题的人.
别误会我的意思,芹菜似乎真的很酷.不幸的是,似乎缺乏支持,并且在其首选后端RabbitMQ中内置了一些奇怪的限制.不幸的是,无论程序有多酷,如果它不起作用,那么它不起作用!
这就是我希望你们所有人都能进来的地方.我想了解cron或者cron-equivalent,它们可以在Windows和Linux环境中以类似方式(最好是相同的)进行设置.
(我现在已经和Celery挣扎了大约两个星期,不幸的是我认为现在是时候抛弃它并放弃它,至少目前是这样.)
我正在Rails 4.2中构建预订系统,我需要以预定义的时间间隔向用户发送一组电子邮件(例如,他们有即将到来的预订,完成后的反馈,更改/取消现有预订的链接等等).我环顾四周,找到了这个和这个,但我试图在这些方法之间做出决定.
我看到了构建这个系统的两种主要方式.
使用像delayed_job这样的队列系统.每当有人进行预订时,我们会将所有电子邮件排队等候正确的时间.
专业版:所有电子邮件的一个队列.自动重试逻辑.
骗局:成千上万的电子邮件最终会在系统中排队.每当有人取消预订时需要出队(依赖:销毁与之相关的电子邮件可能非常简单).关于我们需要电子邮件出去的时间有点复杂的逻辑.
cron+ rake以某个预定义的间隔(每小时?每十五分钟?)运行的任务,并检查需要外出的电子邮件.它运行一个查询,如"查找从现在开始三天的所有预订",然后发送所有电子邮件.
Pro:将所有内容都放入应用程序逻辑中,减少我们需要跟踪的状态量.
Con:需要跟踪已发送的电子邮件,这在概念上类似于我们上面创建的任何作业表.