Puncte:0

cronjob nu funcționează pentru mesageria zilnică pentru slack

drapel us

Ubuntu 20.04
python 3.8

Încerc să trimit un mesaj către canalul slack în fiecare zi la 9 dimineața folosind crontab.

Ca urmare a https://www.youtube.com/watch?v=5bTkiV_Aadc&t=482s crontab funcționează cu succes când scriu în fișierul jurnal în fiecare minut.

Cu toate acestea, replicarea aceleiași metode la mesajele slăbite pare să nu funcționeze și nu poate găsi un motiv pentru aceasta.

Iată ce am încercat până acum (referință: De ce nu funcționează scripturile crontab?)

În primul rând, iată cum arată codul meu:

din dotenv import load_dotenv
import datetime
import numpy ca np
import os
import panda ca pd
din calea de import pathlib
import plotly.graph_objects pe măsură ce merge
import slack

# ---- Comentat -----
# din extract_data import DataExtraction
# din const import inf_type, slack_channel
# env_path = Cale('.') / '.env'
# load_dotenv(dotenv_path=env_path)
# --------------

data = (datetime.date.today() - datetime.timedelta(zile=1)).strftime("%Y%m%d")
dir_path = os.path.dirname(os.path.realpath(__file__))
nume de fișier = os.path.join(dir_path, 'test_log.log')

# Logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
file_handler = logging.FileHandler(nume fișier)
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
logger.addHandler(file_handler)

def write_to_log():
    logger.info(„test”)


if __name__ == "__main__":
    scrie_în_log()
  1. Codul de mai sus funcționează pe crontab numai dacă comentez o parte când folosesc variabila de mediu sau import script care o face.

  2. După ce ați verificat că funcționează pentru scrierea în fișierul jurnal, înlocuirea scrierea în jurnal cu trimiterea mesajului la slack nu pare să funcționeze.

Aici este codul înlocuit (tot codul de mai sus este același)

def send_msg():
    client = slack.WebClient(token="Token_name")
    client.chat_postMessage(channel="#slackbot_test", text="helllo")

if __name__ == "__main__":
    trimite_msg()

Momentan nu ai noroc în căutarea dacă crontab nu funcționează cu slack, orice ajutor ar fi apreciat, mulțumesc!

Puncte:0
drapel it

Locuri de muncă rulează cron, sau systemd Scripturile de pornire nu sunt rulate în același mediu de rulare pe care îl aveți pe desktop. systemd scripturile de pornire sunt rulate ca rădăcină. Nici unul dintre voi CALE modificările sau alte setări ale variabilelor de mediu sunt propagate automat către dvs cron loc de munca. De exemplu, nu există $DISPLAY, deci programele GUI au nevoie de un tratament special (citiți man xhost).

Se pot seta variabile de mediu pentru toate cron locuri de muncă în crontab fişier Citit om 5 crontab.

Uită-te la rezultatele echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias în fiecare dintre mediile dumneavoastră.

De când comanda parte a crontab linia este, implicit, interpretată de /bin/sh, care are o sintaxă mai simplă decât /bin/bash, recomand să aveți comanda fii un apel către a bash script (executabil, montat, începe cu #!/bin/bash) care configurează mediul, apoi apelează programul dorit.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.