Commit efe2453e by Owo Sugiana

Bug fixed default timeout

1 parent 1ad0e230
1.0.1 2023-07-05
--------------
- bin/imgw_mailer dan bin/imgw_agent_job menjadi daemon
- Perbarui status
1.0 2023-06-30
......
......@@ -5,31 +5,81 @@ Repository ini berisi struktur tabel dan beberapa fungsi terkait paket Debian
bernama ``im-gw``. Karena paket itu masih Python 2 maka di sini hadir
penggantinya.
Sesuaikan ``agent_job.ini``, lalu buat tabelnya::
Sesuaikan ``mailer.ini``, lalu jalankan *daemon agent*::
$ ~/env/bin/imgw_mailer mailer.ini
Hasilnya::
2023-07-06 00:08:15,724 DEBUG Connect to mail.opensipkd.com:587
2023-07-06 00:08:27,004 DEBUG Login sebagai no-reply@opensipkd.com
2023-07-06 00:08:27,028 INFO Save /home/sugiana/tmp/mail/result/status.json: {'id': 'no-reply@opensipkd.com', 'status': 0, 'jawaban': 'OK'}
Biarkan dia hidup. Kini sesuaikan ``agent_job.ini``, lalu buat tabelnya::
$ ~/env/bin/imgw_init_db agent_job.ini
Login ke database menggunakan ``psql``, lalu::
Kini jalankan *daemon agent job* yang merupakan pemberi tugas untuk agent::
$ ~/env/bin/imgw_agent_job agent_job.ini
Hasilnya::
2023-07-06 00:09:33,546 INFO Read /home/sugiana/tmp/mail/result/status.json: {'id': 'no-reply@opensipkd.com', 'status': 0, 'jawaban': 'OK'}
Hasil di database::
imgw=> SELECT id, status, startup FROM im.agent;
-[ RECORD 1 ]-------------------
id | no-reply@opensipkd.com
status | 0
startup | 2023-07-06 00:08:27+07
Field ``status`` bernilai nol berarti pengirim email telah siap. Biarkan daemon
itu hidup. Kini mulailah membuat email::
INSERT INTO im.antrian (penerima, pesan)
VALUES ('sugiana@gmail.com', 'Uji coba imgw');
Pindahkan *job* itu ke file::
Di *daemon agent job* akan tampak::
$ ~/env/bin/imgw_agent_job agent_job.ini
2023-07-06 00:34:02,849 INFO Write /home/sugiana/tmp/mail/job/32.json {'id': 32, 'penerima': 'sugiana@gmail.com', 'pesan': 'Uji coba imgw', 'subject': 'Uji coba imgw', 'name': 'sugiana'}
Hasilnya::
Di database *row* pada tabel ``im.antrian`` itu telah pindah ke tabel
``im.selesai``::
2023-07-03 03:59:40,754 INFO Write /home/sugiana/tmp/mail/job/18.json {'id': 18, 'penerima': 'sugiana@gmail.com', 'pesan': 'Uji coba imgw', 'subject': 'Uji coba imgw', 'name': 'sugiana'}
imgw=> SELECT id, penerima, pesan, status FROM im.selesai ORDER BY id DESC LIMIT 1;
Kirim email berdasarkan file JSON tersebut::
-[ RECORD 1 ]---------------
id | 32
penerima | sugiana@gmail.com
pesan | Uji coba imgw
status | 1
$ ~/env/bin/imgw_mailer test-mailer.ini
Status positif seperti ``1`` berarti pesan sedang dikirim. Bila negatif berarti
gagal, misalnya karena *daemon agent* belum aktif.
Hasilnya::
Kini lihat proses pengiriman di log *daemon agent*::
2023-07-06 00:34:03,623 INFO Send {'id': 32, 'penerima': 'sugiana@gmail.com', 'pesan': 'Uji coba imgw', 'subject': 'Uji coba imgw', 'name': 'sugiana'}
2023-07-06 00:34:03,689 INFO Save /home/sugiana/tmp/mail/result/32.json: {'id': 32, 'status': 0, 'jawaban': 'OK'}
Kembali ke *daemon agent job* tampil::
2023-07-06 00:34:03,851 INFO Read /home/sugiana/tmp/mail/result/32.json: {'id': 32, 'status': 0, 'jawaban': 'OK'}
Di database terjadi perubahan::
imgw=> SELECT id, tgl_operator, penerima, pesan, status FROM im.selesai ORDER BY id DESC LIMIT 1;
-[ RECORD 1 ]+-----------------------
id | 32
tgl_operator | 2023-07-06 00:34:03+07
penerima | sugiana@gmail.com
pesan | Uji coba imgw
status | 0
2023-07-03 04:04:03,978 DEBUG Login sebagai no-reply@opensipkd.com
2023-07-03 04:04:04,051 INFO KIRIM {'id': 18, 'penerima': 'sugiana@gmail.com', 'pesan': 'Uji coba imgw', 'subject': 'Uji coba imgw', 'name': 'sugiana'}
2023-07-03 04:04:04,119 INFO {'status': 0, 'jawaban': 'OK'}
Begitulah urutannya, semoga dipahami.
Agar otomatis maka letakkan keduanya di ``cron``.
Untuk menampilkannya bisa menggunakan `Web Instant Messaging Gateway <https://git.opensipkd.com/sugiana/web-imgw>`_.
......@@ -130,6 +130,7 @@ def create_mail_row(a):
def read_queue():
log = getLogger('read_queue')
db_session = registry['db_session']
q = db_session.query(Antrian).filter_by(kirim=True)
q_mail = db_session.query(Mail)
......@@ -154,9 +155,11 @@ def read_queue():
if agent:
s.pengirim = agent.id
if agent.status != 0:
s.status = -2 # Agent belum hidup
s.status = -2
log.error(f'Antrian {a.id}: {agent.id} belum aktif')
else:
s.status = -1 # Tidak dapat agent aktif
log.error(f'Antrian {a.id}: tidak ada pengirim yang aktif')
with transaction.manager:
q.filter_by(id=a.id).delete()
db_session.add(s)
......
import os
import sys
import json
import socket
from time import sleep
from logging import getLogger
from argparse import ArgumentParser
......@@ -19,7 +18,6 @@ from .logger import setup_logging
registry = dict()
socket.setdefaulttimeout(30)
def dict2doc(d):
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!