小编And*_*s_K的帖子

使用annaconda env运行crontab作业

我想让一个cron作业使用一个名为my_env的现有anaconda python环境执行python脚本.我唯一能想到的就是让cron作业运行一个脚本调用my_script.bash,然后激活env,然后运行python脚本.

#!/bin/bash
source activate my_env
python ~/my_project/main.py
Run Code Online (Sandbox Code Playgroud)

尝试从命令行执行此脚本不起作用:

$ sh scripts/my_script.bash
scripts/my_script.bash: 9: scripts/my_script.bash: source: not found
Run Code Online (Sandbox Code Playgroud)

我需要做些什么来确保激活适当的环境.可以向我解释,就像我5岁.

python bash cron anaconda conda

22
推荐指数
4
解决办法
9002
查看次数

Celery 任务未发送给代理

当我尝试将任务发送给代理(RabbitMQ)时,它挂起。

# python shell
promise = foo.s(first_arg="2").apply_async()
# blocking indefinitely. I expected a promise object.
Run Code Online (Sandbox Code Playgroud)

如果我同步运行该任务,它将按预期工作。

# python shell
promise = foo.s(first_arg="2").apply()
>>> hello argument 2
Run Code Online (Sandbox Code Playgroud)

如果我.apply_async()用 ctrl+c 中断,我会得到一些线索的回溯:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/kombu/utils/functional.py", line 32, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/amqp/transport.py", line 173, in _connect
    host, port, family, socket.SOCK_STREAM, SOL_TCP)
  File "/usr/local/lib/python3.7/socket.py", line 752, …
Run Code Online (Sandbox Code Playgroud)

python rabbitmq celery kombu docker

4
推荐指数
1
解决办法
7044
查看次数

如何从文本文件中打印特殊字符

我想读取一个文本文件并在Windows consol中打印内容。但是特殊字符被打乱了。

config.txt

[
  {
    "beer": "øl",
    "eel": "ål",
    "egg": "æg"
  }
]
Run Code Online (Sandbox Code Playgroud)

代码

text = open("config.txt")
print(text.read())
Run Code Online (Sandbox Code Playgroud)

Windows控制台输出python code.py

[
  {
    "beer": "øl",
    "eel": "Ã¥l",
    "egg": "æg"
  }
]
Run Code Online (Sandbox Code Playgroud)

python python-3.x

2
推荐指数
1
解决办法
63
查看次数

如何保持 python 进程活着 - 正确的方法

我经常看到这个问题,但我对答案并不满意。我知道像 Django 和 Flask/Werkzeug 这样的服务器程序有 startserver/run 方法,可以让进程保持活动状态,直到收到停止信号。

我想实现类似的东西,但我不知道如何去做。我认为永恒循环是一种糟糕的方法,因为它浪费了处理时间。我宁愿不使用第三方库。

我的程序必须保持活动状态以等待回调、与服务器通信、监视其内部状态等。

伪代码:

import ...

class Main():
    def __init__():
        self.sensors = sensors.register()
        self.database = remote.connect()
        self.running = True

    def start():
    """ this is what I assume is bad """
        while self.running:
            pass

    def stop():
        self.running = False
        self.cleanup()

    def cleanup():
        self.database.disconnect()
        self.sensors.unregister()
Run Code Online (Sandbox Code Playgroud)

python python-3.x

2
推荐指数
1
解决办法
479
查看次数

标签 统计

python ×4

python-3.x ×2

anaconda ×1

bash ×1

celery ×1

conda ×1

cron ×1

docker ×1

kombu ×1

rabbitmq ×1