Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 根据RAILS\u ENV运行多个延迟的\u作业实例_Ruby On Rails_Multithreading_Asynchronous_Delayed Job - Fatal编程技术网

Ruby on rails 根据RAILS\u ENV运行多个延迟的\u作业实例

Ruby on rails 根据RAILS\u ENV运行多个延迟的\u作业实例,ruby-on-rails,multithreading,asynchronous,delayed-job,Ruby On Rails,Multithreading,Asynchronous,Delayed Job,我正在使用multi-Rails\u 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 ... .. . 我

我正在使用multi-Rails\u 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\u环境启动多个延迟的\u作业:

RAILS_ENV=env_name1 script/delayed_job start

RAILS_ENV=env_name2 script/delayed_job start
..
我注意到我只能运行一个延迟的作业实例 第二个错误是“错误:已经有一个或多个程序实例在运行”

我的问题是:每个RAILS\u ENV不能运行多个延迟的\u作业实例吗?
谢谢

不确定它是否能解决您的问题,但是。。。我经常需要运行多个版本的
script/server
——而这些版本之间的关系也不太好。让它们运行的方法是使用不同的端口。例如:

RAILS_ENV=env_name1 script/server -p 3000
RAILS_ENV=env_name2 script/server -p 3002
也许这也适用于延迟的工作


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

您可以运行多个延迟作业实例,只要它们具有不同的进程名称。正如Slim在他的评论中提到的,您可以使用-i标志向进程名称添加唯一的数字标识符。因此,这些命令看起来像:

RAILS\u ENV=ENV\u name1脚本/延迟的\u作业-i 1启动

RAILS\u ENV=ENV\u name2脚本/延迟的\u作业-I2启动

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


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

谢谢Taryn,您可以帮助我想到延迟的作业助手--helper“'-p','--prefix NAME',”字符串作为工作进程名称的前缀答案是:RAILS\u ENV=ENV\u name1 script/server-i1 RAILS\u ENV=ENV\u name2 script/server-i1。我开始这样做-
RAILS\u ENV=ENV\u name script/delayed\u job-I“$RAILS\u ENV”start
。这使我可以启动和停止特定实例,而不必试图记住实例编号。即使存在-i选项,在我的情况下,它也表示已在运行。