Запустить обновление Laravel Scout вне Laravel

У меня есть серверная часть Laravel, которая в основном работает как API и панель инструментов для моей базы данных и ее данных. Данные ежедневно обновляются с помощью скрипта Python непосредственно в базе данных. Есть ли способ запустить обновление Laravel Scout (чтобы строка также обновлялась в Algolia) вне проекта PHP?

Единственной альтернативой, которую я подумал, было использование API Laravel для обработки изменений между скриптом Python и базой данных, чтобы только Laravel мог напрямую взаимодействовать с базой данных.

Тем не менее, я бы предпочел, чтобы был способ добавить слушателя или что-то еще к этому без использования Laravel между ними, поскольку скрипт python ДЕЙСТВИТЕЛЬНО быстр.


person Community    schedule 26.08.2017    source источник


Ответы (2)


Для этого есть два пути:

1). Вы можете использовать Laravel API для обновления записей Algolia в базе данных.

2). Возможно, вы можете использовать библиотеку Algolia Python.

Я предлагаю вам использовать Laravel API. Вы можете просто вызвать URL-адрес API из Python Script. Вам нужно написать понятный PHP-код API-интерфейса контроллера Laravel, потому что Python быстрый, и ему нужно будет быстро взаимодействовать с API.


Кроме того: вы можете просто использовать модуль Python с именем flask для подключения к вашей базе данных laravel и вносить в базу данных нужные вам изменения. (Каждой базой данных можно управлять с разных языков программирования, таких как PHP, Ruby on Rails, Python и т. д.)

Только laravel не может общаться с вашей базой данных, это можно сделать и из Python (но, конечно, в основном это возможно и из laravel).

person Giorgi Khurtsidze    schedule 26.08.2017
comment
Привет, спасибо, что нашли время ответить на мой вопрос, однако на самом деле он не отвечает на то, о чем я спрашиваю. Проблема в том, что я хочу обновлять записи Algolia, когда я вношу изменения непосредственно в базу данных mysql, используя какой-то прослушиватель событий Laravel или что-то в этом роде. - person ; 26.08.2017
comment
Для этого есть два пути: 1). Вы можете использовать Laravel API для обновления записей Algolia в базе данных. 2). Возможно, вы можете использовать библиотеку Algolia Python. Я предлагаю вам использовать Laravel API. Вы можете просто вызвать URL-адрес API из Python Script. Вам нужно написать понятный PHP-код API-интерфейса контроллера Laravel, потому что python быстрый, и ему нужно будет быстро взаимодействовать с API. - person Giorgi Khurtsidze; 26.08.2017

Если вы хотите переиндексировать все, что кажется вам лучшим способом, я бы просто выполнил php path/to/artisan scout:import "App\Model" через Python.

Если вы хотите обновить каждую модель, потому что вы будете редактировать только очень ограниченное число, как сказал Джорджи, я бы использовал клиент Algolia Python и напрямую вызывал API Algolia. Писать должно быть очень легко. https://github.com/algolia/algoliasearch-client-python

person Julien Bourdeau    schedule 28.08.2017