我正在使用多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实例? 感谢
答案 0 :(得分:14)
只要具有不同的进程名称,就可以运行多个延迟作业实例。与他在评论中提到的Slim一样,您可以使用-i标志为进程名称添加唯一的数字标识符。所以命令看起来像:
RAILS_ENV = env_name1 script / delayed_job -i 1 start
RAILS_ENV = env_name2 script / delayed_job -i 2 start
这将创建两个单独的延迟作业实例,命名为delayed_job.1和delayed_job.2
问题在于,当你这样做时,你也必须在停止时使用相同的标志。在呼叫停止时省略-i 1或-i 2不会停止它们。由于延迟工作将无法找到正确的相应流程来停止。
答案 1 :(得分:0)
不确定它是否会解决您的问题,但是......我经常需要运行script/server
的多个版本 - 而且这些版本也不能很好地相互配合。让它们运行的方法是使用不同的端口。例如:
RAILS_ENV=env_name1 script/server -p 3000
RAILS_ENV=env_name2 script/server -p 3002
也许这也适用于delayed_job?
(虽然我会避开端口3000,因为它是std rails端口):))