Hi, i know this is an old post, but i am having a similar issue.
In fact, all you need to do to set a CONSTANT timeout per job is to declare that variable public in your job class (https://laravel.com/docs/5.6/queues#max-job-attempts-and-timeout) :
public $timeout = 300; // Only works with artisan queue:work (NOT with queue:listen)
However, is there a way to make this variable dynamic?
E.g if you want to sync all your users to some server via an API, the job will take longer depending on how many users you have. As far as I can tell, defining a timeout method on the job does not work like so:
public function timeout() {
return 2*User::count(); // 2 seconds per user
}
Is there any other (working) way? Thanks in advance!