每个RAILS_ENV运行多个delayed_job实例

我正在使用多RAILS_Env的Rails应用程序

env_name1: adapter: mysql username: root password: host: localhost database: db_name_1 env_name2: adapter: mysql username: root password: host: localhost database: db_name_2 ... .. . 

我正在使用delayed_job(2.0.5)插件来管理异步和背景工作。

我想为每个RAILS_ENV启动多个delayed_job:

 RAILS_ENV=env_name1 script/delayed_job start RAILS_ENV=env_name2 script/delayed_job start .. 

我注意到我只能为第二个运行一个delayed_job实例,我有这个错误“错误:已经有一个或多个程序正在运行”

我的问题:每个RAILS_ENV都不可能运行多个delayed_job实例吗? 谢谢

只要具有不同的进程名称,就可以运行多个延迟作业实例。 与他在评论中提到的Slim一样,您可以使用-i标志为进程名称添加唯一的数字标识符。 所以命令看起来像:

RAILS_ENV = env_name1 script / delayed_job -i 1 start

RAILS_ENV = env_name2脚本/ delayed_job -i 2开始

这将创建两个单独的延迟作业实例,命名为delayed_job.1和delayed_job.2

一个问题是,当你这样做时,你也必须在停止时使用相同的标志。 在呼叫停止时省略-i 1或-i 2不会停止它们。 由于延迟工作将无法找到正确的相应流程来停止。

不确定它是否能解决你的问题,但是……我经常需要运行多个版本的script/server – 而且这些版本也不能很好地相互配合。 让它们运行的​​方法是使用不同的端口。 例如:

 RAILS_ENV=env_name1 script/server -p 3000 RAILS_ENV=env_name2 script/server -p 3002 

也许这也适用于delayed_job?

(虽然我会避免使用端口3000,因为它是std rails端口):)