我目前只是通过调度程序运行任务。它运行了几分钟。我没有理由认为它被关闭了太长时间,但我不知道它是否应该是一个工作线程。
我如何在工作线程上启动clojure进程?它是否像调整ProcFile和调度程序命令一样简单?
我的ProcFile:
web:lein with-profile production trampoline run -m webhook.server
我的应用: - 每小时一次,通过对另一台服务器的预定Web服务调用将数据提取到Heroku数据库中。 - 根据需要,基于环的Web服务将JSON数据提供给Web上其他位置的其他进程。
答案 0 :(得分:1)
似乎你可以创建一个Heroku“Worker”dyno,它启动一个普通的旧Java线程。例如,您可以使用具有-main
函数的Clojure应用程序,该函数使用并发,即
(defn -main [&args]
(doseq [res (map deref [(future "task 1")
(future "task 2")
(future "task 3"])]
(save-results res)))
save-results
是一个虚构的函数,可以在某处保存您的工作结果,发送电子邮件,无论如何。
请注意,这可能是更好的方法,即使用Agents或Clojure Toolbox(即Quartzite)中列出的Clojure调度库之一。我的例子是一个非常简单(天真的?)的例子,它证明了Heroku工作者dyno的并发性。
有关更多讨论,请参阅此处: https://groups.google.com/forum/#!topic/clojure/xQs6MqD3680
另外,我发现了quite a few篇关于在单个Heroku dyno上运行多个线程的博文/文章。它限制你到每个dyno 255个线程。
更新我为上面创建了一个概念验证: