PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak mogę wysłać e-mail z wyzwalacza PostgreSQL?

Zobacz artykuł depesz o doskonałych jak zwykle i pg-message-queue.

Wysyłanie e-maili bezpośrednio z bazy danych może nie być dobrym pomysłem. Co się stanie, jeśli rozpoznawanie DNS jest powolne i wszystko zawiesza się na 30 sekund, a następnie kończy się? Co zrobić, jeśli Twój serwer poczty chwieje się i zajmuje 5 minut akceptować wiadomości? Sesje bazy danych będą zawieszone w wyzwalaczu, dopóki nie osiągniesz max_connections i nagle nie możesz nic zrobić, tylko czekać lub ręcznie anulować transakcje.

Zalecam posiadanie wyzwalacza NOTIFY LISTEN ing skryptu pomocniczego, który pozostaje stale uruchomiony i połączony z bazą danych (ale nie w transakcji).

Wszystko, co musi zrobić Twój wyzwalacz, to INSERT wiersz do tabeli kolejki i wyślij NOTIFY . Twój skrypt otrzyma NOTIFY wiadomość, ponieważ została zarejestrowana w LISTEN w tym celu sprawdza tabelę kolejek i robi resztę.

Program pomocniczy można napisać w dowolnym dogodnym języku; Zwykle używam Pythona z psycopg2 .

Ten skrypt może wysłać wiadomość e-mail na podstawie informacji znalezionych w bazie danych. Nie musisz robić całego brzydkiego formatowania tekstu w PL/PgSQL, możesz zamiast tego podstawić elementy do szablonu w potężniejszym języku skryptowym i po prostu pobrać dane zmiennej z bazy danych, gdy NOTIFY wchodzi.

Dzięki takiemu podejściu Twój pomocnik może wysłać każdą wiadomość i dopiero wtedy usunąć informacje z tabeli kolejki. W ten sposób, jeśli wystąpią przejściowe problemy z systemem pocztowym, które powodują niepowodzenie wysyłania, nie utracisz informacji i możesz kontynuować próby wysłania ich, dopóki się nie uda.

Jeśli naprawdę musisz to zrobić w bazie danych, zobacz PgMail.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pule połączeń PostgreSQL:część 3 – Pgpool-II

  2. Przestaw na wiele kolumn za pomocą funkcji Tablefunc

  3. Jak mieć pełną funkcjonalność offline w aplikacji internetowej z bazą danych PostgreSQL?

  4. Formatuj miesiąc cyframi rzymskimi w PostgreSQL

  5. Jak znaleźć zduplikowane rekordy w PostgreSQL