Resque не очищает Varnish Cache при постановке в очередь - PullRequest
0 голосов
/ 05 ноября 2019

Я делаю некоторое очищение кэша Varnish, которое работает само по себе, но не работает при использовании Resque.

Это работает:

... // lots of code
$cacheManager = $container->get('cachemanager');
$cacheTags = [...]; //array with tags
$cacheManager->ban($cacheTags);

Так что в том же месте я сделал это:

$job = CacheJob::create($banTags);
$queueService = $container->get('bcc_resque.resque'); //The resque bundle for symfony
$queueService->enqueue($job);

И класс CacheJob выглядит следующим образом:

используйте BCC \ ResqueBundle \ ContainerAwareJob в качестве BaseJob;

class CacheJob extends BCC\ResqueBundle\ContainerAwareJob
{
    public $args;

    public static function create(array $cacheTags): self
    {
        $job = new self();
        $job->args = array(
            'cacheTags' => $cacheTags
        );

        return $job;
    }

    public function run($args)
    {
        $banTags = $args['cacheTags'];
        $container = $this->getContainer();
        $cacheManager =  $container->get('cachemanager');
        $cacheManager->purgeTags($banTags);
    }
}

Так что это буквально то же самое, что работало до, просто поставил в очередь.

Я смотрю журнал Resque, а также веб-интерфейс, и оба говорят, что работа была выполнена. Переменная в $ args содержит ожидаемые теги ... но запрет никогда не поступает в Varnishlog, как это происходит при постановке в очередь.

Кто-нибудь знает, почему, или хотя бы как отладить его дальше?

...